2014-04-15 8 views
2

나는 두 개의 웹 사이트를 가지고있다. 하나는 aspx 파일이고, 다른 하나는 wcf 서비스이고 두 개의 끝점, 하나의 http와 하나의 명명 된 파이프가있다. 둘 다 같은 시스템에서 실행되기 때문에 net.pipe 바인딩을 사용할 후보자처럼 보입니다.동일한 머신의 다른 사이트에서 ASPX 호출로 실행중인 WCF 클라이언트와 net.pipe를 통해 SVC를 호출 할 수 있습니까?

aspx 파일은 서비스 클라이언트를 만들고 net.pipe를 호출하려고 시도합니다. 을 사용할 수 없습니다 : 엔드 포인트 주소 '// 로컬 호스트/netNamedPipeBinding net.pipe'의 서비스가 있기 때문에 Application.The 메시지 '/ dev에'에서

"서버 오류 가 전달되지 않을 수있다 : 그리고 이것은 얻을 주소의 프로토콜. "

이 (아무 권한 오류가없는 리스너 오류와 동일) 보안 문제가 될 수 있습니다 제안 인터넷 검색,하지만 난 이미 서비스와 웹 사이트의 파일에 [네트워크] 사용자 그룹에 NTFS 권한을 부여했습니다 변경 없음.

aspx가있는 사이트는 양식 인증 (즉, Windows 인증이 아닌)을 사용하고 있으며 서비스 웹 사이트는 익명 인증입니다. web.config의 net.pipe 보안 설정은 "None"입니다.

로컬에서는이 기능이 잘 작동하지만 Visual Studio Dev Server가 수행 할 수없는 콘솔 응용 프로그램에서 명명 된 파이프 호스트를 실행해야합니다. 명명 된 파이프. 또한 HTTP 끝점은 IIS에서 제대로 작동합니다.

.NET 4.0, IIS 7.5, Win2008을 실행 중입니다.

IIS 구성 지금까지 내가,

  • net.pipe는
  • 가 설치된 WAS *의 설정 정보와 서비스 웹 사이트를 사용할 수있다 말할 창문을 통해 (, 사용할 수있는 기능)
  • net.pipe 리스너 Windows 서비스가 사용됩니다.
  • 각 웹 사이트 (인증이 단절에 대한 제 3 자 단일 로그온하여 수행됩니다) 익명 액세스입니다
  • 각 웹 사이트가이 (아마 관련이없는) 자신의 응용 프로그램 풀의
  • 서비스 사이트는 아마 (웹 가든 모드가 아닌) 관련

서비스 구성 (동일한 시스템에 IIS에서 실행되는 다른 VDIR)

<system.serviceModel> 
    <bindings> 
     <netNamedPipeBinding> 
      <binding name="netNamedPipeBindingConfig" closeTimeout="00:01:00" 
      openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" 
      transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions" 
      hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288" 
      maxBufferSize="65536" maxConnections="10" maxReceivedMessageSize="65536"> 
       <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" 
        maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
       <security mode="None"> 
        <transport protectionLevel="EncryptAndSign" /> 
       </security> 
      </binding> 
     </netNamedPipeBinding> 
    </bindings> 
    <services> 
     <service name="MyService"> 
      <host> 
       <baseAddresses> 
        <add baseAddress="net.pipe://localhost/" /> 
       </baseAddresses> 
      </host> 
      <endpoint 
         address="netNamedPipeBinding" 
         bindingConfiguration="netNamedPipeBindingConfig" 
         binding="netNamedPipeBinding" 
         contract="IMyService" > 
      </endpoint> 
     </service> 
    </services> 
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 
</system.serviceModel> 

클라이언트 구성 (ASP.NET 웹 사이트, 동일한 시스템, 서비스에서 다른 VDIR은)

<system.serviceModel> 
    <bindings> 
     <netNamedPipeBinding> 
      <binding name="NetNamedPipeBinding_IMyService" closeTimeout="00:01:00" 
       openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" 
       transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions" 
       hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288" 
       maxBufferSize="65536" maxConnections="10" maxReceivedMessageSize="65536"> 
       <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" 
        maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
       <security mode="None"> 
        <transport protectionLevel="EncryptAndSign" /> 
       </security> 
      </binding> 
     </netNamedPipeBinding> 
    </bindings> 
    <client> 
     <endpoint 
       address="net.pipe://localhost/netNamedPipeBinding" 
       binding="netNamedPipeBinding" 
       bindingConfiguration="NetNamedPipeBinding_IMyService" 
       contract="MyService.IMyService" 
       name="NetNamedPipeBinding_IMyService"> 
     </endpoint> 
    </client> 
</system.serviceModel> 

단지를 C#을 아무것도 특별하지

(서비스 & 계약 이름은 ​​무고한을 보호하기 위해 변경) Add-Service-Reference 생성 된 프록시. (그리고 모든 코드는 wsHttp 바인딩으로 잘 작동합니다.

+0

일부 코드 - 두 사이트의 web.config 등 –

+0

관련 설정을 추가했습니다. – MatthewMartin

+0

IIS 구성 방법에 대한 몇 가지 정보를 추가 할 수 있습니까? 바인딩은 어떻게 설정됩니까? 서비스 사이트에서 활성화 된 프로토콜로 net.pipe를 활성화 했습니까? http://stackoverflow.com/questions/16820022/binding-net-pipe-to-default-web-site-via-iis –

답변