我们在MVC3和实体框架中有一个简单的Intranet站点。从visual studio调试运行一切正常。当我将网站发布到我的本地框IIS7.5网络服务器或同一域上的开发框时,我会收到提示输入用户名和密码,它将无法连接到该网站。它只返回401.1错误并好奇地显示
Logon Method Not yet determined
Logon User Not yet determined
我已验证启用了Windows身份验证并禁用了匿名身份验证。该应用程序正在使用applicationPoolIdentity但我已经尝试使用网络服务没有区别。 webconfig包括
<authentication mode="Windows" />
我在没有授权部分的情况下尝试过它。
<authorization>
<allow users="*" />
</authorization>
我在网上发现的唯一另一件事涉及更改注册表项,但这最终会在生产服务器上,所以我不习惯为此进行注册表更改。
使用此代码块在本地运行会返回所有预期信息
<div id="title">
<h4> Environment.UserName: @Environment.UserName
@DateTime.Now.Millisecond.ToString() </h4>
@foreach (var role in Roles.GetRolesForUser())
{
role.ToString(); <br />
}
</div>
<div id="logindisplay">
Context.User.Identity.Name <strong>@Context.User.Identity.Name</strong>!<br />
@Environment.UserDomainName
</div>
这是一个MVC3 Web应用程序。 IIS身份验证开关是
Anonymous Authentication Disabled
ASP.NET Impersonation Disabled
Forms Authentication Disabled
Windows Authentication Enabled
我遗失的任何其他想法或事物?
答案 0 :(得分:3)
MSDN上的这篇文章说明了如何设置IIS 7 MVC3 Intranet网站: http://msdn.microsoft.com/en-us/library/gg703322(VS.98).aspx
与您有关的有趣内容很可能是模仿的最后一部分。如果您将站点作为Windows身份验证运行但关闭了模拟,则您将使用经过身份验证的身份读取/执行网站的文件。这意味着每个想要访问该站点的用户都需要文件夹/文件权限。
为避免这种情况,请使用Windows Auth允许用户进行身份验证,但使用模拟使用单个身份来访问文件夹/文件。
答案 1 :(得分:2)
似乎您的Windows身份验证有效,因为在打开页面时系统会提示您输入凭据...您应该将凭据放在那里,它应该会将您带到您的网页...或问题是您是在放入正确的凭据后无法打开您的页面?
我首先尝试将您的应用程序池模式从经典更改为集成(反之亦然)。
然后,看起来您的机器在某个域中?在这种情况下,请检查您是否提供了正确的凭据。您应该将<domain>\<your_username>
作为用户名。此外,如果这不起作用,请尝试在域中添加和删除您的计算机,然后重试。可能有更多的想法,让我知道这是怎么回事,如果可能的话,命令nltest.exe /SC_QUERY:domain_name
的输出是什么?
答案 2 :(得分:1)
您需要在IIS中实际配置它以使用Windows身份验证。
如果您只是在AppPool上执行此操作,应用程序设置将覆盖此。
当你说:
我已验证启用了Windows身份验证并禁用了匿名身份验证。
你究竟在哪里设置了这个?不确定在您收到提示的计算机上运行的操作系统,但某些版本的Windows不支持Windows身份验证(即Windows 7 Home不支持)。
答案 3 :(得分:1)
我遇到了同样的问题。在默认网站下创建新应用程序时,一切正常。但是,当我创建一个新网站并将文件放在那里时,我似乎无法让它工作。我一直收到登录提示。我为我的新站点使用相同的应用程序池,并配置了目录权限以允许完全控制iis_isuser和其他人,因为这是一个开发机器。