2012-03-15 112 views
0

我很想擁有相同的合同和服務,因爲basicHttpBinding和webHttpBinding都能夠進行POST調用。不知何故,當我查看wsdl時,從來沒有看到webHttpBinding的端點。我做錯了什麼?WCF 4和多個端點綁定

<system.serviceModel> 
<services> 
    <service name="MyService"> 
    <endpoint address ="" 
       binding="basicHttpBinding" 
       name="EndpointBasic" 
       contract="IMyService"/> 

    <endpoint address ="PostMethod" 
       binding="webHttpBinding" 
       name="EndpointJson" 
       contract="IMyService"/> 
    <host> 
     <baseAddresses> 
     <add baseAddress ="http://localhost/WebsiteName/MyService.svc"/> 
     </baseAddresses> 
    </host> 
    </service> 
</services> 
<bindings> 
    <basicHttpBinding> 
    <binding name="basicBinding" /> 
    </basicHttpBinding> 
    <webHttpBinding> 
    <binding name="Postbinding" 
      maxBufferSize="65536" 
      maxReceivedMessageSize="2000000000" 
      transferMode="Streamed"> 
    </binding> 
    </webHttpBinding> 
</bindings> 
<behaviors> 
    <serviceBehaviors> 
    <behavior name=""> 
     <serviceMetadata httpGetEnabled="true" /> 
     <serviceDebug includeExceptionDetailInFaults="true" /> 
    </behavior> 
    </serviceBehaviors> 
    <endpointBehaviors> 
    <behavior name="JsonBehavior"> 
     <webHttp defaultOutgoingResponseFormat="Json" /> 
    </behavior> 
    </endpointBehaviors> 
</behaviors> 
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 

謝謝!

+0

讓我也提一下,我想從這個webhttpbinding的HTML頁面調用一個POST ...如果這樣做有所作爲。 – DavieDave 2012-03-15 15:23:14

回答

1

我有同時適用於SOAP和REST以下服務元素條目:

  1. 在服務元素您的合同和服務名稱是:

    <service name="XMLService.RestAndSoapService" behaviorConfiguration="default"> 
         <endpoint address="" behaviorConfiguration="web" binding="webHttpBinding" bindingConfiguration="RestBinding" name="SampleService" contract="XMLService.IRestAndSoapService" /> 
         <endpoint address="soap" binding="basicHttpBinding" bindingConfiguration="noSecurity" contract="XMLService.IRestAndSoapService" /> 
         </service> 
    

    指向你的配置注意不完全合格。確保他們是完全合格的,即。包括命名空間和界面。

  2. 您沒有上述改變你的配置中指定的bindingConfiguration爲 「Postbinding」 爲webHttpEndpoint和 「basicBinding」 爲basicHttpBinding的端點

所以可能看起來如下圖所示:

<service name="namespace.MyService"> 
     <endpoint address ="" 
        bindingConfiguration="basicBinding" 
        binding="basicHttpBinding" 
        name="EndpointBasic" 
        contract="namespace.IMyService"/> 

     <endpoint address ="PostMethod" 
        bindingConfiguration="Postbinding" 
        binding="webHttpBinding" 
        name="EndpointJson" 
        contract="namespace.IMyService"/> 
     <host> 
      <baseAddresses> 
      <add baseAddress ="http://localhost/WebsiteName/MyService.svc"/> 
      </baseAddresses> 
     </host> 
     </service> 
+0

另外,如果您希望應用「JsonBehavior」,請將「behaviorConfiguration =」JsonBehavior「'屬性添加到」PostMethod「端點元素。 – 2012-03-15 15:39:24

+0

好吧,似乎有所作爲...但是,當我轉到http://localhost/WebsiteName/MyService.svc/PostMethod我得到一個頁面,說終端找不到。 – DavieDave 2012-03-15 15:47:16

+0

nm ...我想我忘了PostMethod是地址..我需要添加超出該操作。咄 – DavieDave 2012-03-15 15:49:28