在web.config中,以下代码块应该用于WCF RESTful服务吗?
<endpoint address="" binding="webHttpBinding"contract="Wcf_Test.IMyService" behaviorConfiguration="httpEndpointBehavour"> <identity> <dns value="localhost"/> <Identity> </endpoint>
和
<behaviors> <serviceBehaviors> <behavior name="httpBehavIoUr"> <serviceMetadata httpGetEnabled="True"/> <serviceDebug includeExceptionDetailInFaults="False"/> </behavior> </serviceBehaviors>
和
<endpointBehaviors> <behavior name="httpEndpointBehavour"> <webHttp /> </behavior> </endpointBehaviors> </behaviors>
解决方法
要配置WCF REST服务,您需要在web.config文件中执行一些操作
1)声明您的服务及其端点
<services> <service name="SparqlService.SparqlService" behaviorConfiguration="ServiceBehavior"> <endpoint binding="webHttpBinding" contract="SparqlService.ISparqlService" behaviorConfiguration="webHttp"/> </service> </services>
服务名称为[项目名称].[服务名称]
行为配置将与您在下一步中声明的行为相同
绑定必须是webHttpBinding,因为您希望它作为REST.如果需要SOAP,则声明为basicHttpBinding
合同是[项目名称].[接口名称]
端点中的行为配置将是您在下一步中声明的名称
2)声明服务行为(通常是默认)
<behavior name="ServiceBehavior" > <serviceMetadata httpGetEnabled="true" /> <serviceDebug includeExceptionDetailInFaults="false" /> </behavior>
行为名称可以是任何名称,但它将用于匹配您在步骤1中声明的BehaviorConfiguration
剩下的就是一个人
3)声明您的端点行为
<endpointBehaviors> <behavior name="webHttp"> <webHttp/> </behavior> </endpointBehaviors>
行为名称可以是任何名称,但它将用于匹配端点中的behaviorConfiguration.
最后,这就是web.config对于简单的REST服务应该是什么样子:
<?xml version="1.0"?> <configuration> <system.web> <compilation debug="true" targetFramework="4.0" /> </system.web> <system.serviceModel> <services> <service name="SparqlService.SparqlService" behaviorConfiguration="ServiceBehavior"> <endpoint binding="webHttpBinding" contract="SparqlService.ISparqlService" behaviorConfiguration="webHttp"/> </service> </services> <behaviors> <serviceBehaviors> <behavior name="ServiceBehavior" > <serviceMetadata httpGetEnabled="true" /> <serviceDebug includeExceptionDetailInFaults="false" /> </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="false"/> </behavior> </serviceBehaviors> <endpointBehaviors> <behavior name="webHttp"> <webHttp/> </behavior> </endpointBehaviors> </behaviors> </system.serviceModel> <system.webServer> <modules runAllManagedModulesForAllRequests="true"/> </system.webServer> </configuration>