【问题标题】:basicHttpBinding & webHttpBinding togetherbasicHttpBinding 和 webHttpBinding 一起
【发布时间】:2012-11-16 17:00:41
【问题描述】:

我正在使用 C# 和 .NET Framework 4.0 开发 WCF 服务。

我正在使用webHttpBinding 来执行此操作:

[OperationContract]
[WebInvoke(Method = "POST",
    ResponseFormat = WebMessageFormat.Json,
    BodyStyle = WebMessageBodyStyle.Bare,
    UriTemplate = "filteredOrders/")]
OrderContract[] GetOrders(IdsMessage msg);

[OperationContract]
[WebInvoke(Method = "POST",
    ResponseFormat = WebMessageFormat.Json,
    BodyStyle = WebMessageBodyStyle.Bare,
    UriTemplate = "completeFilteredOrders/")]
OrderContract[] LoadCompleteFilteredOrders(IdsMessage msg);

但现在我需要使用流式传输将图像发送到该 Web 服务,并且我需要添加 basicHttpBinding 来执行此操作。

如何为这个使用 basicHttpBinding 的 WCF Web 服务创建一个新的 [OperationContract]

抱歉,我是 WCF 开发的新手。

顺便说一下,这是我的Web.config

<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
  <system.serviceModel>
    <services>
      <service name="EReportService.RestServiceImpl" behaviorConfiguration="ServiceBehaviour">
        <endpoint address="" binding="webHttpBinding" contract="EReportService.IRestServiceImpl" behaviorConfiguration="web">
        </endpoint>
      </service>
    </services>
    <bindings>
      <webHttpBinding>
        <binding maxReceivedMessageSize="2097152" maxBufferSize="2097152" transferMode="Streamed"/>
      </webHttpBinding>
    </bindings>
    <behaviors>
      <serviceBehaviors>
        <behavior name="ServiceBehaviour">
          <serviceMetadata httpGetEnabled="true"/>       
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="web">
          <webHttp/>
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
 <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
  <connectionStrings>

  </connectionStrings>
</configuration>

【问题讨论】:

标签: c# wcf rest soap wcf-binding


【解决方案1】:

只需使用不同的地址创建另一个端点(两个端点不能共享相同的地址) - 您可以修改现有的 OperationContract 以创建非 RESTful 方法。

 <system.serviceModel>
    <services>
      <service name="EReportService.RestServiceImpl" behaviorConfiguration="ServiceBehaviour">
        <endpoint address="" binding="webHttpBinding" contract="EReportService.IRestServiceImpl" behaviorConfiguration="web">
        </endpoint>
        <endpoint address="soap" binding="basicHttpBinding" contract="EReportService.IRestServiceImpl" >
        </endpoint>
      </service>
    </services>
 </system.serviceModel>

【讨论】:

    猜你喜欢
    • 2011-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-23
    • 2011-03-15
    • 1970-01-01
    相关资源
    最近更新 更多