我已经编写了我的第一个休息服务,目前我正在浏览器中测试它们.
是否有测试客户端或某种类型提供额外的功能,或者这是正常的测试方式,即在IE,Firefox等?
我在.net 4中运行了一个REST WCF服务,我测试了它正在运行的Web服务,并接受我做的HttpRequest.但是我在尝试访问Web服务中的HttpRequest主体时遇到了问题.我已经尝试使用Fiddler和我的WinForm应用程序发送附加在HttpRequest上的随机大小的数据,我似乎无法在运行时找到任何可以找到我的请求主体的对象.我最初的本能是查看HttpContext.Current.Request.InputStream但该属性的长度为0,所以我试着查看IncomingWebRequestContext该对象甚至没有方法也没有属性来获取HttpRequest的主体.
所以我的问题是,有没有办法在WCF中访问HttpRequest请求体?
PS:请求体内的数据是JSON字符串,对于响应,它也会将响应体内的数据作为JSON字符串返回.
我有一个复杂的WCF Rest服务,它接受多个输入和对象.我不能简单地通过在Fiddler中进行HTTP POST来调用它,因为有太多的数据要提供(我可以,但它将永远带我).所以我想在代码中使用代理来完成它.有没有办法为.NET 4 WCF Rest服务生成代理?否则,您建议我允许我轻松测试服务?
谢谢.
WCF REST(和WCF WebApi)如何将Uri映射到正确的服务端点?
在WCF WebApi预览4的上下文中:在自定义委托通道内,我想基于传入的HttpRequestMessage.RequestUri找到关联的路由前缀或服务类型.
所以,例如,
RouteTable.Routes.MapServiceRoute<ManagersResource>("employees/managers", config);
RouteTable.Routes.MapServiceRoute<EmployeesResource>("employees", config);
Run Code Online (Sandbox Code Playgroud)
假设有一个请求进入http:// server/employees/John
到ResourceFactoryProvider实例化时,它已经知道具体的服务类型.我似乎无法追踪Uri和路由表路由之间的解决方案.
非常感谢提前.
我正在尝试将json字符串解析为列表或arraylist。我从为Android项目创建的WCF RESTful服务获得以下json响应
[
{
"Class": "Lorem",
"Company": "Ipsum",
"Id": "XXXX",
"Name": "Avent"
},
{
"Class": "Consectetur",
"Company": "Adipiscing",
"Id": "YYYYY",
"Name": "Nulla"
}
]
Run Code Online (Sandbox Code Playgroud)
我在这里阅读了几个解析gson结果的示例,但是如我所见,我在制定容器类方面遇到了困难。我已经将它读取到Group类中,但无法将其解析为任何List或ArrayList。
小组课:
public class Group {
private String Id;
private String Name;
private String Class;
private String Company;
}
Run Code Online (Sandbox Code Playgroud)
组容器类:
public class Groups {
private List<Group> GRP;
}
Run Code Online (Sandbox Code Playgroud)
gson解析语句:
Groups GRP = gson.fromJson(jsonString, Groups.class);
Run Code Online (Sandbox Code Playgroud)
我确实需要对jsonString进行一些操作,因为它在字符串中显示了一些空格(在逗号后),并且在删除它们之后它开始工作,至少是为了解析为单个元素。不知道这是否会影响任何事情,但我想提一提。
另外,我尝试了
类型listType = new TypeToken>(){} .getType(); gson.toJson(myStrings,listType);
但这似乎也不起作用,我也不知道这对我的情况是否必要。
我正在使用json.net在IIS托管的restful服务中执行处理我的json反序列化.
首先,这是我正在尝试使用的对象.
[DataContract]
public class CreateSamplesRequest
{
[DataMember] public Guid SessionId { get; set; }
[DataMember] public SampleTemplateDTO Template { get; set; }
}
[DataContract]
public class SampleTemplateDTO
{
[DataMember] public int NumberOfSamples { get; set; }
[DataMember] public int CompanyId { get; set; }
[DataMember] public int SampleTypeId { get; set; }
[DataMember] public HmisDTO Hmis { get; set; }
[DataMember] public List<AttributeValueDTO> AttributeValues { get; set; }
}
[DataContract]
public class AttributeValueDTO
{
[DataMember] public int AttributeId { …Run Code Online (Sandbox Code Playgroud) 我正在开发一个WCF resful服务,它将基本上从一些移动应用程序中消耗.在POST上我试图发送一个DataContract对象[实际上我必须发送一个对象列表]和另一个单独的id作为字符串.我的问题是,是否可能定义我的函数来接受DataContract对象和单个字符串?
以下是我的代码:接口声明:
[ServiceContract]
public interface IService1
{
[OperationContract]
[WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json, UriTemplate = "GetDataUsingDataContract/{id}")]
CompositeType GetDataUsingDataContract(string id, CompositeType composite );
}
[DataContract]
public class CompositeType
{
bool boolValue = true;
string stringValue = "Hello ";
[DataMember]
public bool BoolValue
{
get { return boolValue; }
set { boolValue = value; }
}
[DataMember]
public string StringValue
{
get { return stringValue; }
set { stringValue = value; }
}
}
Run Code Online (Sandbox Code Playgroud)
功能的实际定义:
public CompositeType GetDataUsingDataContract(string id, CompositeType …Run Code Online (Sandbox Code Playgroud) 我正在使用 POST 方法和 OBJECT 作为输入参数创建 REST 服务。而客户端请求无法获得客户端发布的实际 JSON 数据。有什么方法可以从 C# WCF 服务中挖掘 JSON 代码。
我的代码:
namespace ACTService
{
public class AssortmentService : IAssortmentService
{
public void DeleteColor(DeleteColorContarct objdelcolor)
{
new Methods.ColorUI().DeleteColorDetails(objdelcolor);
}
}
}
Run Code Online (Sandbox Code Playgroud)
和我的界面
namespace ACTService
{
[ServiceContract]
public interface IAssortmentService
{
[OperationContract]
[WebInvoke(UriTemplate = "DeleteColor", Method = "POST", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json,BodyStyle=WebMessageBodyStyle.Wrapped)]
void DeleteColor(DeleteColorContarct objColor);
}
}
Run Code Online (Sandbox Code Playgroud)
我需要访问其他类文件ColorUI中的JSON格式
遵循KISS原则,我突然意识到以下情况:
我不想重新发明轮子,如果有人已经这样做了我也不会感到惊讶,所以我的问题很简单:有没有人已经创建了一个可以使用RESTful的简单(桌面,而不是web)客户端应用程序基于实体框架的服务,允许用户直接读取和写入此服务的数据?
否则,我只需要自己"发明"这个.:-)
但是数据库有大量数据可以管理近50个表.在针对本地数据库进行开发时,我们可以直接访问数据库,因此我不需要此工具.部署后,Web应用程序将是访问数据的唯一方法,因此我无法使用此工具.但是我们还有一个测试阶段,数据库存储在本地域之外的另一个系统上,而这个数据库不适用于开发人员.只有管理员才能直接访问此数据库,从而使测试更加复杂.
但是,通过RESTful服务,我仍然可以直接访问数据.因此,当某些测试出错时,我可以通过此连接修复数据,或者只是为我本地系统上的测试创建数据副本.还有很多其他功能,甚至可以直接在Excel或XMLSpy中打开表服务的URL来查看内容.但是当我想要写回东西时,我必须编写特殊代码才能做到这一点.允许我访问数据并对其进行修改的通用工具会更容易.由于它是围绕ADO.NET数据服务的通用设置,因此这也应该是合理的.
因此,我可以做到,但希望其他人已经做了类似的事情.但似乎还没有制造这样的工具......
我正在通过Windows Azure上的ASP.NET应用程序托管我的REST服务.它工作得很完美,但几天前我需要一个角色间通信服务,我建立了我的服务,但我有托管它的问题.
我的Global.asax中的此代码在我的本地Azure开发服务器中运行良好,但它在Azure云中不起作用.
正确托管它们的最佳方法是什么?
Global.asax中:
public class Global : HttpApplication
{
void Application_Start(object sender, EventArgs e)
{
StartNotificationServiceHost();
RegisterRoutes();
}
public ServiceHost ServiceHost { get; private set; }
private void RegisterRoutes()
{
var hostfactory = new WebServiceHostFactory();
RouteTable.Routes.Add(new ServiceRoute("REST/Companies",hostfactory, typeof(Companies)));
RouteTable.Routes.Add(new ServiceRoute("REST/Public", hostfactory, typeof(Public)));
RouteTable.Routes.Add(new ServiceRoute("REST/Users", hostfactory, typeof(Users)));
RouteTable.Routes.Add(new ServiceRoute("REST/Contacts", hostfactory, typeof(Contacts)));
RouteTable.Routes.Add(new ServiceRoute("REST/Projects", hostfactory, typeof(Projects)));
RouteTable.Routes.Add(new ServiceRoute("REST/Instances", hostfactory, typeof(Instances)));
RouteTable.Routes.Add(new ServiceRoute("REST/Activity", hostfactory, typeof(Activity)));
RouteTable.Routes.Add(new ServiceRoute("REST/Search", hostfactory, typeof(Search)));
RouteTable.Routes.Add(new ServiceRoute("REST/Tasks", hostfactory, typeof(Tasks)));
RouteTable.Routes.Add(new ServiceRoute("REST/Documents", hostfactory, typeof(Documents)));
}
private void StartNotificationServiceHost() …Run Code Online (Sandbox Code Playgroud) 我正在使用 WCF 休息服务,我想返回总记录数,就像我们在 webapi 或 Breeze 中拥有内联计数一样。
我在WCF中的方法是
[WebGet(UriTemplate = "GiveMeNamesOfStudents", ResponseFormat = WebMessageFormat.Json)]
public List<MyDataClass> GiveMeNamesOfStudentsList()
{
var returnData = (from myentity in myEntityRepository.AsQueryable()
select new MyDataClass
{
Id = myentity.Id,
Name = myentity.Name
}).Skip(PageSize * PageNo).Take(PageSize).ToList();
return returnData;
}
Run Code Online (Sandbox Code Playgroud)
如何返回实际数据的总记录数和数据?