为了这件事,我花了太长时间用头撞墙。
运行 Azure SDK 1.7/Visual Studio 2010 Ultimate。我似乎无法通过 IIS/WAS 托管的命名管道运行 WCF 服务。任何在计算模拟器中连接到我的服务的尝试都会产生
在本地计算机上找不到管道端点“net.pipe://localhost/services/MyService.svc”
我本来打算发布我的代码,但结果发现这篇文章中的示例代码 http://blogs.msdn.com/b/tomholl/archive/2011/06/28/hosting-services-with-was-and-iis-on-windows-azure.aspx给了我完全相同的错误。所有代码都可以在该网站上找到。
据我所知,powershell 任务正在成功执行。 (好吧,我必须在启动任务中将 ExecutionPolicy 从 Unrestricted 更改为 RemoteSigned,但之后它运行得很好。)NetPipeActivator 服务正在运行,当我调用 Get-WebApplication 时,我在协议(protocol)中看到 net.pipe列表:
PS C:\> $WebRoleSite = (get-website "*webrole*").Name
PS C:\> Get-WebApplication -Site $WebRoleSite
Name Application pool Protocols Physical Path
---- ---------------- --------- -------------
WcfService1 4a16b147-f9ac-41d9 http,net.pip c:\Code\WasInAzure\WcfService1
-9543-0577da64fb9a e
还有什么可能发生吗?
最佳答案
我解决了。唷!
我的问题是我从根网站而不是子应用程序中托管我的 WCF 服务。我必须将以下行添加到 powershell 脚本中才能在主网站上启用命名管道:
Set-ItemProperty "IIS:/Sites/$WebRoleSite" -Name EnabledProtocols 'http,net.pipe'
关于WCF 命名管道和 Azure Web 角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11531706/