0

私は正常に動作していた WCF サービスを持っています。最近、アップロード ファイルの一部を含めるコードを追加しようとしましたが、それ以来、次のエラーが発生しています。バインド インスタンスは、URI をリッスンするために既に関連付けられています 'http://xxx /DSLDService/DSLDService.svc'. 2 つのエンドポイントが同じ ListenUri を共有する場合は、同じバインディング オブジェクト インスタンスも共有する必要があります。競合する 2 つのエンドポイントは、AddServiceEndpoint() 呼び出し、構成ファイル、または AddServiceEndpoint() と構成の組み合わせで指定されました。

サービスの FileUpload 部分に含めたエントリを構成ファイルから削除すると、サイトは機能しますが、アップロード部分は機能しません。以下は私のサービスとクライアントの設定です。

クライアント Web.config:

  <system.serviceModel>
<bindings>
  <basicHttpBinding>
    <binding name="BasicHttpBinding_IRequestType" closeTimeout="00:01:00"
      openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
      allowCookies="false" bypassProxyOnLocal="false" maxBufferPoolSize="20000000"
      maxReceivedMessageSize="20000000" useDefaultWebProxy="true" />
    <binding name="BasicHttpBinding_IRecipientType" closeTimeout="00:01:00"
      openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
      allowCookies="false" bypassProxyOnLocal="false" maxBufferPoolSize="20000000"
      maxReceivedMessageSize="20000000" useDefaultWebProxy="true" />
    <binding name="BasicHttpBinding_ICase" closeTimeout="00:01:00"
      openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
      allowCookies="false" bypassProxyOnLocal="false" maxBufferPoolSize="20000000"
      maxReceivedMessageSize="20000000" useDefaultWebProxy="true" />
    <binding name="BasicHttpBinding_IHoliday" closeTimeout="00:01:00"
      openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
      allowCookies="false" bypassProxyOnLocal="false" maxBufferPoolSize="20000000"
      maxReceivedMessageSize="20000000" useDefaultWebProxy="true" />
    <binding name="BasicHttpBinding_IManagerType" closeTimeout="00:01:00"
      openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
      allowCookies="false" bypassProxyOnLocal="false" maxBufferPoolSize="20000000"
      maxReceivedMessageSize="20000000" useDefaultWebProxy="true" />
    <binding name="BasicHttpBinding_IDonor" closeTimeout="00:01:00"
      openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
      allowCookies="false" bypassProxyOnLocal="false" maxBufferPoolSize="20000000"
      maxReceivedMessageSize="20000000" useDefaultWebProxy="true" />
    <binding name="BasicHttpBinding_IUser" closeTimeout="00:01:00"
      openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
      allowCookies="false" bypassProxyOnLocal="false" maxBufferPoolSize="20000000"
      maxReceivedMessageSize="20000000" useDefaultWebProxy="true" />
    <binding name="BasicHttpBinding_ICaseStatus" closeTimeout="00:01:00"
      openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
      allowCookies="false" bypassProxyOnLocal="false" maxBufferPoolSize="20000000"
      maxReceivedMessageSize="20000000" useDefaultWebProxy="true" />
    <binding name="BasicHttpBinding_ICaseDonor" closeTimeout="00:01:00"
      openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
      allowCookies="false" bypassProxyOnLocal="false" maxBufferPoolSize="20000000"
      maxReceivedMessageSize="20000000" useDefaultWebProxy="true" />
    <binding name="BasicHttpBinding_IAbsence" closeTimeout="00:01:00"
      openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
      allowCookies="false" bypassProxyOnLocal="false" maxBufferPoolSize="20000000"
      maxReceivedMessageSize="20000000" useDefaultWebProxy="true" />
    <binding name="BasicHttpBinding_IAgency" closeTimeout="00:01:00"
      openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
      allowCookies="false" bypassProxyOnLocal="false" maxBufferPoolSize="20000000"
      maxReceivedMessageSize="20000000" useDefaultWebProxy="true" />
    <binding name="BasicHttpBinding_IDocument" closeTimeout="04:01:00"
      openTimeout="04:01:00" receiveTimeout="04:01:00" sendTimeout="04:01:00"
      maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"
      transferMode="Streamed">
      <readerQuotas maxDepth="128" maxStringContentLength="2147483647"
      maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
    </binding>
  </basicHttpBinding>
</bindings>
<client>
  <endpoint address="http://xxx/DSLDService/DSLDService.svc"
    binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IRequestType"
    contract="DSLDServiceReference.IRequestType" name="" />
  <endpoint address="http://xxx/DSLDService/DSLDService.svc"
    binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IRecipientType"
    contract="DSLDServiceReference.IRecipientType" name="" />
  <endpoint address="http://xxx/DSLDService/DSLDService.svc"
    binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ICase"
    contract="DSLDServiceReference.ICase" name="" />
  <endpoint address="http://xxx/DSLDService/DSLDService.svc"
    binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IHoliday"
    contract="DSLDServiceReference.IHoliday" name="" />
  <endpoint address="http://xxx/DSLDService/DSLDService.svc"
    binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IManagerType"
    contract="DSLDServiceReference.IManagerType" name="" />
  <endpoint address="http://xxx/DSLDService/DSLDService.svc"
    binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IDonor"
    contract="DSLDServiceReference.IDonor" name="" />
  <endpoint address="http://xxx/DSLDService/DSLDService.svc"
    binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IUser"
    contract="DSLDServiceReference.IUser" name="" />
  <endpoint address="http://xxx/DSLDService/DSLDService.svc"
    binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ICaseStatus"
    contract="DSLDServiceReference.ICaseStatus" name="" />
  <endpoint address="http://xxx/DSLDService/DSLDService.svc"
    binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ICaseDonor"
    contract="DSLDServiceReference.ICaseDonor" name="" />
  <endpoint address="http://xxx/DSLDService/DSLDService.svc"
    binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IAbsence"
    contract="DSLDServiceReference.IAbsence" name="" />
  <endpoint address="http://xxx/DSLDService/DSLDService.svc"
    binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IAgency"
    contract="DSLDServiceReference.IAgency" name="" />
  <endpoint address="http://xxx/DSLDService/DSLDService.svc"
    binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IDocument"
    contract="DSLDServiceReference.IDocument" name="" />
</client>

wcf サービスの web.config は次のようになります。

<bindings>
  <basicHttpBinding>
    <!-- set to 2GB files (Maximum allowed per MSDN Documentation) -->
    <binding name="TransferService"
    maxReceivedMessageSize="2147483647"
    maxBufferSize="2147483647" transferMode="Streamed">
      <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
      maxArrayLength="2147483647" maxBytesPerRead="2147483647"
      maxNameTableCharCount="2147483647" />
    </binding>
  </basicHttpBinding>      
</bindings>
<services>
  <service name="DSLDService.DSLDService">
    <endpoint address="" binding="basicHttpBinding" bindingConfiguration=""
      contract="DSLDService.IRequestType" />
    <endpoint binding="basicHttpBinding" bindingConfiguration=""
      contract="DSLDService.IRecipientType" />
    <endpoint binding="basicHttpBinding" bindingConfiguration=""
      contract="DSLDService.ICase" />
    <endpoint binding="basicHttpBinding" bindingConfiguration=""
      contract="DSLDService.IHoliday" />
    <endpoint binding="basicHttpBinding" bindingConfiguration=""
      contract="DSLDService.IManagerType" />
    <endpoint binding="basicHttpBinding" bindingConfiguration=""
      contract="DSLDService.IDonor" />
    <endpoint binding="basicHttpBinding" bindingConfiguration=""
      contract="DSLDService.IUser" />
    <endpoint binding="basicHttpBinding" bindingConfiguration=""
      contract="DSLDService.ICaseStatus" />
    <endpoint binding="basicHttpBinding" bindingConfiguration=""
      contract="DSLDService.ICaseDonor" />
    <endpoint binding="basicHttpBinding" bindingConfiguration=""
      contract="DSLDService.IAbsence" />
    <endpoint binding="basicHttpBinding" bindingConfiguration=""
      contract="DSLDService.IAgency" />
    <endpoint binding="basicHttpBinding" bindingConfiguration="TransferService" 
      contract="DSLDService.IDocument" />
  </service>
</services>

問題は IDocument クラスのエントリにあるようで、他は問題なく動作します。すべてが BasicHTTPBinding であるため、同じサービスに残すことができると思いましたが、バインディングが既に関連付けられていると言っている理由がわかりません。

ありがとうございました。

4

1 に答える 1

0

なぜこれらすべてのエンドポイントとバインディングが必要なのですか? 私の意見では、1 つのエンドポイントと 1 つのバインディングが必要です。この構成は今まで見たことがありません。

于 2012-11-30T17:47:28.650 に答える