我有一个托管主WCF服务的Windows服务。此服务的客户端都托管在IIS 7中,第一个是IIS托管的WCF服务,第二个是标准的Asp.Net应用程序。两个IIS托管客户端都通过命名管道与Windows服务进行通信。
IIS托管的WCF服务可以完美地与Windows托管的WCF服务进行通信,但Asp.Net服务因此错误而失败: 无法从管道URI获取管道名称:拒绝访问。
我的第一反应是,这是一个权限问题,但我不知道在哪里。第二,为什么IIS托管的WCF服务能够毫无问题地进行通信,但Asp.Net应用程序会失败?
答案 0 :(得分:1)
好的,我解决了这个问题,或者说我找到了许可问题的位置。
事实证明,匿名身份验证设置使用了我们的客户端(物理人员,而不是我们的WCF客户端)创建的一些奇怪的用户,而不是NetworkService用户(应用程序池正在使用的身份)。
但这几乎引出了另一个问题:为什么甚至新创建的网站默认为此IUSR而不是系统默认值?在任何情况下,我只是希望它在谷歌索引,因为几乎没有与之相关的文章。
答案 1 :(得分:0)
检查WCF和ASP.NET服务所在的应用程序池的标识。
也许WCF服务的AppPool具有与其他AppPool具有不同权限的身份?
答案 2 :(得分:0)
此外,您可能需要注意IUSR是匿名访问者的默认IIS7帐户。有关默认帐户的说明,请参阅Understanding the Built-In User and Group Accounts in IIS 7.0。
希望这有用。