나는 두 개의 웹 사이트를 가지고있다. 하나는 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 바인딩으로 잘 작동합니다.
일부 코드 - 두 사이트의 web.config 등 –
관련 설정을 추가했습니다. – MatthewMartin
IIS 구성 방법에 대한 몇 가지 정보를 추가 할 수 있습니까? 바인딩은 어떻게 설정됩니까? 서비스 사이트에서 활성화 된 프로토콜로 net.pipe를 활성화 했습니까? http://stackoverflow.com/questions/16820022/binding-net-pipe-to-default-web-site-via-iis –