seb*_*ibu 4 wcf json wcf-binding wcf-rest
我正在尝试创建一个返回json的wcf服务.我的配置文件有一些问题,我也不知道如何测试它.
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="false" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<services>
<service name="ContactLibraryJSON.ContactLibrary">
<endpoint address="" binding="webHttpBinding" bindingConfiguration="JSONEndpointBehavior"
contract="ContactLibraryJSON.IContactServiceJSON" />
<endpoint address="mex" binding="mexHttpBinding" bindingConfiguration=""
contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://192.168.1.31/ContactLibraryJSON" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="JSONEndpointBehavior">
<webHttp/>
</behavior>
<behavior>
<!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
<serviceMetadata httpGetEnabled="true"/>
<!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)
我还是得到的
"无法将行为扩展webhttp添加到服务行为名称,
JSONEndpointBehavior因为基础行为类型未实现IServiceBehaviorInterface"
联系人的定义如下:
[DataContract(Name="Contact")]
public class Contact
{
[DataMember(Name="FirstName")]
public string firstName=null;
[DataMember(Name="LastName")]
public string lastName=null;
[DataMember(Name="Email")]
public string email=null;
[DataMember(Name = "Age")]
public int age = 0;
[DataMember(Name = "Street")]
public string street=null;
[DataMember(Name = "City")]
public string city=null;
[DataMember(Name = "Country")]
public string country=null;
}
Run Code Online (Sandbox Code Playgroud)
IContactService定义如下:
[ServiceContract]
public interface IContactServiceJSON
{
[OperationContract]
[WebGet(BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json, UriTemplate = "")]
Contact GetContact();
}
Run Code Online (Sandbox Code Playgroud)
执行GetContact:
public Contact GetContact()
{
return new Contact()
{
firstName = "primulNume",
lastName = "alDoileaNume",
age = 33,
city = "Cluj",
country = "Romania",
email = "ceva@mail.com",
street = "Bizusa 8"
};
}
Run Code Online (Sandbox Code Playgroud)
我的服务在我的局域网中另一台计算机上运行 基地址如下:http://192.168.1.xxx/ContactLibraryService.ContactLibraryService由IIS托管并转换为应用程序.
您需要添加<webHttp/>到端点行为列表.此外,端点需要使用webHttpBinding.最后,要响应GETHTTP请求,您需要使用该WebGet属性(而不是WebInvoke(Method="GET").
<system.serviceModel>
<services>
<service name="ContactLibrary.ContactLibrary">
<endpoint address=""
binding="webHttpBinding"
behaviorConfiguration="JSONEndpointBehavior"
contract="ContactLibrary.IContact"/>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<endpoint address="ws"
binding="wsHttpBinding"
bindingConfiguration=""
contract="ContactLibrary.IContact" />
<host>
<baseAddresses>
<add baseAddress="http://localhost/ContactLibrary" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="JSONEndpointBehavior">
<webHttp/>
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior>
<!-- To avoid disclosing metadata information,
set the value below to false and remove the metadata endpoint above before deployment -->
<serviceMetadata httpGetEnabled="true"/>
<!-- To receive exception details in faults for debugging purposes,
set the value below to true. Set to false before deployment
to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
Run Code Online (Sandbox Code Playgroud)
和服务合同:
[ServiceContract]
public interface IContact
{
[OperationContract]
[WebGet(BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json, UriTemplate = "contact")]
Contact GetContact(int idContact);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11970 次 |
| 最近记录: |