2012-01-16 73 views
0

我有一组在IIS7托管WCF服务。我正在将服务移至其他文件夹,以便开始在URL中指定版本和环境。例如:身份检查在IIS中的问题托管WCF服务

http://myserver/MyServices/ServiceA.svc 

变为:

http://myserver/MyServices/QA/1.1.0/ServiceA.svc 

我配置了新的文件夹是在IIS的应用程序,并设置它,我们一直在使用相同的服务应用程序池下运行。具有所有工作得很好,我能够浏览到我的.svc URL并查看WSDL或开拓WCF测试客户端的端点。然而,试图使用该服务时,我收到以下错误:

身份校验失败传出消息。预期的身份是 '身份(http://schemas.xmlsoap.org/ws/2005/05/identity/right/possessproperty:http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn)' 为“HTTP://myserver/MyServices/QA/1.1.0/ServiceA .svc'目标端点。

当我检查了WSDL输出,我注意到标识部分似乎离开了应用程序池,它通常包括的身份:

<Identity xmlns="http://schemas.xmlsoap.org/ws/2006/02/addressingidentity"> 
<Upn>[email protected]</Upn> 
</Identity> 

试图重新部署和重新配置应用在后在IIS中,我只能获取身份以显示在部分服务的元数据中。其他服务仍然不包括它,这比以前更加奇怪。据我所知,原始堆栈和IIS中的新堆栈之间的配置差异为零。我可能会遇到什么样的问题会导致这些类型的身份问题?

+0

迈克你好,本文着眼有用。 http://msdn.microsoft.com/en-us/library/ms733130.aspx。任何可能导致配置应用程序池时出现问题?它是否自行回收,并且它是否在系统帐户下运行? – 2012-01-16 17:35:24

回答

0

该问题是由于尝试将新的服务堆栈Web应用程序嵌套到现有服务堆栈Web应用程序中造成的。我认为,当子应用程序中的服务将端点暴露给与根Web应用程序相同的合约(尽管在理论上这应该工作得很好)时,这可能会对IIS造成一些混淆。我只需将新服务堆栈移动到单独的文件夹结构中。一旦我这样做了,我就没有问题让应用程序池标识在元数据中公开。