2011-10-15 23 views
13

私は私のWCFサービスのため、以下の設定があります。WCF endpointConfigurationNameには何が必要ですか?

<system.serviceModel> 
<services> 
    <service behaviorConfiguration="After.BehaviourConfig" name="ServiceInstancingDemo.Service1"> 
    <endpoint address="" binding="wsHttpBinding" bindingConfiguration="After.BindingConfig" 
     name="After.ConfigName" contract="ServiceInstancingDemo.IService1"> 
     <identity> 
     <dns value="localhost" /> 
     </identity> 
    </endpoint> 
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
    <host> 
     <baseAddresses> 
     <add baseAddress="http://rb-t510/NGCInstancing/Service1.svc" /> 
     </baseAddresses> 
    </host> 
    </service> 
</services> 
<bindings> 
    <wsHttpBinding> 
    <binding name="After.BindingConfig" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" maxBufferPoolSize="524288111" maxReceivedMessageSize="524288111" allowCookies="false"> 
     <security mode="None" /> 
    </binding> 
    </wsHttpBinding> 
</bindings> 
<behaviors> 
    <serviceBehaviors> 
    <behavior name="After.BehaviourConfig"> 
     <serviceMetadata httpGetEnabled="true" /> 
     <serviceDebug includeExceptionDetailInFaults="true" /> 
     <serviceThrottling maxConcurrentCalls="30" maxConcurrentInstances="2147483647" maxConcurrentSessions="30" /> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 

私は、次のクライアントコードでサービスを呼び出すことができる午前:

NGC.Service1Client ngc = new NGC.Service1Client(); 

     var taskA = Task<string>.Factory.StartNew(() => ngc.WaitThenReturnString(5)); 

     this.listBox1.Items.Add(taskA.Result); 

呼び出すクライアントの設定サービスは次のとおりです。

<system.serviceModel> 
    <bindings> 
     <wsHttpBinding> 
      <binding name="Before" closeTimeout="00:01:00" openTimeout="00:01:00" 
       receiveTimeout="00:10:00" sendTimeout="00:01:00" maxBufferPoolSize="524288111" 
       maxReceivedMessageSize="524288111" allowCookies="false" /> 
      <binding name="After" closeTimeout="00:01:00" openTimeout="00:01:00" 
       receiveTimeout="00:10:00" sendTimeout="00:01:00" maxBufferPoolSize="524288111" 
       maxReceivedMessageSize="524288111" allowCookies="false"> 
       <security mode="None" /> 
      </binding> 
      <binding name="WSHttpBinding_IService1" closeTimeout="00:01:00" 
       openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" 
       bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard" 
       maxBufferPoolSize="524288" maxReceivedMessageSize="65536" 
       messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true" 
       allowCookies="false"> 
       <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" 
        maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
       <reliableSession ordered="true" inactivityTimeout="00:10:00" 
        enabled="false" /> 
       <security mode="None"> 
        <transport clientCredentialType="Windows" proxyCredentialType="None" 
         realm="" /> 
        <message clientCredentialType="Windows" negotiateServiceCredential="true" /> 
       </security> 
      </binding> 
     </wsHttpBinding> 
    </bindings> 
    <client> 
     <endpoint address="http://rb-t510/NGCInstancing/Service1.svc" 
      binding="wsHttpBinding" bindingConfiguration="Before" contract="NGCInstance.IService1" 
      name="Before" /> 
     <endpoint address="http://rb-t510/NGCInstancing/Service1.svc" 
      binding="wsHttpBinding" bindingConfiguration="After" contract="NGCInstance.IService1" 
      name="After" /> 
     <endpoint address="http://rb-t510/NGCInstancing/Service1.svc" 
      binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IService1" 
      contract="NGC.IService1" name="WSHttpBinding_IService1"> 
      <identity> 
       <dns value="localhost" /> 
      </identity> 
     </endpoint> 
    </client> 
</system.serviceModel> 

問題は、同じ機能を実行するが別の動作を実行する別のエンドポイントを追加することです。これを行うには、enpointConfigurationNameの文字列をline = new NGC.Service1Clientのコンストラクタに渡す必要があると思います。私が合格するために必要なものの文字列を知らない - 私はそれがエンドポイント構成名「After.ConfigName」であると予想されているだろうが、私はこれを試してみましたが、次のエラーメッセージました:

が持つエンドポイント要素を見つけることができませんでしたが「After.ConfigName」という名前を付け、ServiceModelクライアント構成セクションで「NGC.IService1」という名前を付けます。これは、アプリケーションで設定ファイルが見つからなかったか、またはこの名前に一致するエンドポイント要素がクライアント要素内に見つからなかった可能性があります。

誰でも助けてください。

答えて

22

使用する対応するクライアントエンドポイントのname属性の値を渡します。たとえば、3番目のエンドポイントを使用する場合は、

new NGC.Service1Client("WSHttpBinding_IService1") 
+0

です。ありがとうございます。 –

関連する問題