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.config 需要更改以支持 Rest

下面是您可以使用的示例代码段。 在这里,我添加了必须在服务类中实现的示例方法,然后为该 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>