2012-03-15 6 views
0

POSTコールを行うためにbasicHttpBindingとwebHttpBindingの両方として公開される同じ契約とサービスを提供しようとしています。どうにかして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

答えて

1

私はSOAPとRESTの両方のために働く、次のサービス要素のエントリを持っている:あなたの設定に注意する

<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> 

ポイント:

  1. あなたのサービス要素ではご契約とサービス名をしています完全修飾ではありません。それらが完全に修飾されていることを確認します。インターフェースと共に名前空間を含む。

  2. あなたは上記のあなたの設定を変更すると

のでbasicHttpBindingエンドポイントのためwebHttpEndpointと「basicBinding」のために「Postbinding」としてbindingConfigurationを指定していないとして、以下のようになります。

<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 "エンドポイント要素に追加してください。 –

+0

しかし、私はhttp://localhost/WebsiteName/MyService.svc/PostMethodに移動したときに違いがあるように見えました。エンドポイントが見つかりませんというページが表示されます。 – DavieDave

+0

nm ...私はPostMethodがアドレスであることを忘れてしまったと思います。私はそれを超えて操作を追加する必要がありました。デュ – DavieDave

関連する問題