你需要通过MVC网站进行Windows身份验证通过以及WCF

问题描述:

好的。我有一个访问WCF程序的MVC2应用程序,并使用该信息填充其模型等等。我不确定我需要做的一切吗?我的客户端应用程序(MVC2应用程序)和我的服务器应用程序(WCF服务)中都有模拟代码。在我的IIS 7安装程序(在Windows Server 2008上),我禁用了匿名身份验证,启用了ASP.net模拟,并启用了Windows身份验证。我将我的流程模型池标识设置为ApplicationPoolIdentity。我认为这应该可以做到。但是,我不断收到错误,告诉我用户标识未通过。我想,我想知道你需要什么来让这种应用程序工作?你需要通过MVC网站进行Windows身份验证通过以及WCF

为了您的MVC应用程序确保您的网络配置包含以下

<authentication mode="Windows" /> 
    <authorization> 
    <deny users="?" /> 
</authorization> 

还要注意的是IIS对网站每个树节点上的身份验证选项,因此例如,如果您使用默认Web站点,有你在此节点下的应用程序,身份验证选项可以在您的站点的顶级节点和节点之间有所不同。对于我的网站,我已针对默认网站节点关闭所有auth方法,然后仅在应用程序级节点上使用Windows身份验证。确保匿名在所有节点上关闭或httpcontext.current.user对象将为空,在我们的情况下导致我们的应用程序崩溃。

切换认证模式确实会继承,所以在调整父节点时要小心,因为您可能会意外更改子节点的设置。

+0

应该是其中一个绑定的身份验证设置,是另一个身份验证设置。原谅我的无知,我对这个有点新鲜...... :-)哦,你确实说过MVC应用和服务。我想我希望这就是你的意思,因为我没有在我的服务,但它是在我的MVC应用程序。 – SoftwareSavant

+0

对不起,我没有详细说明。上述设置将存放在您的web.config文件中,该文件存在于您的MVC应用程序的根目录中。我猜想我们需要知道的第一件事是用户没有经过的地方,尝试去第一页的表单加载,并检查HttpContext.Current.User以查看这个对象是否为null。如果是这样,你是mvc应用程序不认证。如果它与服务相关,则需要在服务上模拟客户端。有关于如何在这里执行此操作的相当不错的文档 http://msdn.microsoft.com/en-us/library/ms731090.aspx –

+0

我想我可能已经在我的测试服务器上通过遵循此建议来解决此问题。 – SoftwareSavant