WCF 服务中的 web.config 需要更改以支持 Rest
本文关键字:支持 Rest 服务 web config WCF | 更新日期: 2023-09-27 18:31:53
我有一个使用 Soap 的 WCF 服务。我也需要休息。我在我的方法中添加了一个WebGet
属性,如下所示:
[OperationContract]
[WebGet(UriTemplate = "login/{username}/{password}/{PartnerID}")]
Model.PartnerAuthentication authenticate(Model.PartnerRequest request);
但是当我在配置文件中更改与 rest 相关的一些配置时,我收到错误。 不确定我与 REST 相关的配置是否正确:
这是我的web.config
:
<services>
<service behaviorConfiguration="HubBehavior" name="Acquisition.AcquisitionService">
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<endpoint
binding="basicHttpBinding" bindingConfiguration="basicBinding"
contract="Acquisition.IAcquisition" />
<endpoint name="wsEndpoint"
address="ws"
binding="wsHttpBinding" bindingConfiguration="wsBinding"
contract="Acquisition.IAcquisition" />
<endpoint
address="web"
behaviorConfiguration="restfulBehavior"
binding="webHttpBinding"
contract="Acquisition.IAcquisition"/>
</service>
</services>
与休息和我的行为相关的最后一个端点是:
<behaviors>
<endpointBehaviors>
<behavior name="restfulBehavior">
<webHttp/>
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="HubBehavior">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
下面是您可以使用的示例代码段。 在这里,我添加了必须在服务类中实现的示例方法,然后为该 WCF 服务添加了 Web 配置。希望这能帮助您解决你的问题。
[OperationContract]
[WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Xml,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "/GetNameXML?name={name}")]
string GetNameXML(string name);
<system.serviceModel>
<services>
<service name="WcfService1.TestService" behaviorConfiguration="ServiceBehaviour">
<endpoint address="" binding="webHttpBinding" contract="WcfService1.ITestService" behaviorConfiguration="web">
</endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="ServiceBehaviour">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="web">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>