我们有以下项目/代码结构:
- ProjectA 是一个 MVC3 项目,它使用带有 ASP.NET 成员资格提供程序的表单身份验证来对用户进行身份验证。它目前仅使用成员资格和角色配置,而不是配置文件。它有相关的 web.config 部分来配置它
- ProjectB 是一个 WCF 服务,它使用相同的身份验证机制,并通过以下方式做到这一点
- 与 ProjectA 相同的 loginUrl 属性
- 在两个项目中,forms 标记的 name 属性都设置为“.ASPXFORMSAUTH”
- system.web 下的 machineKey 元素在两个项目中设置为相同的值
- 注意:ProjectB 的 web.config 不包含 ASP.NET 成员资格配置元素。
当 ProjectA 中的代码调用 ProjectB 中的 WCF 时,它会在调用的标头上传递 cookie 详细信息,以便可以正确验证 WCF 服务。(正如我最初编码时在我之前的问题中详细描述的那样 - MVC3 应用程序使用表单身份验证在其他解决方案中使用 WCF)。
如上所述,这种方法在内部开发和测试服务器上运行良好。
但是,在客户端安装上(在相同的服务器设置上 - 带有 IIS 7.5 的 Server 2008)它只适用于我们必须将 ASP.NET 成员身份配置元素添加到 ProjectB(WCF 服务)的 web.config 中。如果我们不这样做,那么 ProjectB 将从 machine.config 中获取默认(示例)ASP.NET 成员资格配置元素,然后抱怨不存在的连接字符串(因为它们只是其中的示例) )。machine.configs 在我们内部的开发和测试服务器上具有相同的条目,但未发现相同的问题。
有没有人见过这个并且知道我们如何阻止 ProjectB 在 machine.config 中寻找条目?
谢谢