2012-11-30 3 views
0

잘 작동하는 WCF 서비스가 있습니다. 최근 업로드 파일 조각을 포함하도록 코드를 추가하려고 시도 했으므로 다음 오류가 발생했습니다. A 바인딩 인스턴스가 이미 URI 'http : //xxx/DSLDService/DSLDService.svc'를 수신 대기하도록 연결되었습니다. 두 개의 엔드 포인트가 동일한 ListenUri을 공유하려는 경우에도 동일한 바인딩 오브젝트 인스턴스를 공유해야합니다. 충돌하는 두 종점은 AddServiceEndpoint() 호출, 구성 파일 또는 AddServiceEndpoint()와 config의 조합으로 지정되었습니다.바인딩 인스턴스가 이미 URI 오류 청취와 연결되었습니다.

사이트 구성 파일에서 서비스의 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의 외모를 like :

<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 클래스 항목과 같고 나머지는 ok입니다. 모두 내가 BasicHTTPBinding 그래서 같은 서비스에 그들을 떠날 수 있다고 생각, 왜 그것이 바인딩이 이미 연결되어 있다고 말하고 있는지 모르겠다.

감사합니다.

답변

0

왜 이러한 모든 종점과 바인딩이 필요한가요? 제 의견에는 1 점의 엔드 포인트와 1 개의 바인딩이 있어야합니다. 전에이 구성을 본 적이 없습니다.

+0

다른 기능을위한 다른 인터페이스를 구축 중이 었는데 각 인터페이스의 종점이 필요하다고 생각했습니다. 예를 들어 IUser는 사용자 기능을 처리하고 ICase는 Cases와 관련된 기능을 처리합니다. 그럴 필요가 없으며 하나의 엔드 포인트를 가질 수 있고 바인딩 할 수 있지만 모든 인터페이스를 유지할 수 있습니까? – Paritosh

+0

나는 그렇게 생각하지 않는다. 1 서비스, 1 바인딩, 1 엔드 포인트가 필요하다고 생각합니다. 그리고이 서비스에는 "사용자"기능, "사례"기능과 같은 많은 기능이 포함되어 있습니다. 바인딩은 주소입니다. 귀하의 경우에는 서비스가 포함되어야하는 10-20 개의 기능을 가진 1 개의 서비스, 1 개의 바인딩, 1 개의 끝점이 있어야한다고 생각합니다. 단순하게 유지하십시오. – iefpw

+0

감사합니다. 나는 그것을보고 결합 할 수 있는지 알아 보겠습니다. 그것을 어지럽히고 난 후에 나는 나의 WCF 서비스의 설정에서 문제를 깨달았다. 나는 IDocument 하나를 제외하고 모두 bindingConfiguration = ""을 가지고 있었기 때문에, 다른 끝점에서 분리되어 있어야하거나, 모두 bindConfiguration = "TransferService"로 변경하면 시스템이 다시 작동합니다. – Paritosh

관련 문제