【发布时间】:2014-08-21 15:21:33
【问题描述】:
在我的本地机器上测试和开发时,我用来在域上使用 User.Identity.Name 获取我的用户名的代码运行良好。
现在我已发布到本地服务器,应用程序不断将我重定向到 /login.aspx?ReturnUrl= 页面,但我收到 401 - Unauthorized 错误。
我不知道下一步该做什么。以下是我目前采取的步骤:
- 在 IIS 和我的项目属性中禁用匿名身份验证
- 添加到 Web.config
- 在我的所有控制器上设置 [Authorize]
- 在我的项目属性上启用了 Windows 身份验证
如果我在本地服务器上运行站点,错误会更详细一点:
HTTP Error 401.2 - Unauthorized
You are not authorized to view this page due to invalid authentication headers.
然后我不确定这个错误是否与通常的 401 不同。
有什么想法吗?
【问题讨论】:
-
你说你在iis上禁用了匿名身份验证,它说启用了什么身份验证?
-
你被重定向是什么意思?发布后,(默认窗口)授权由 IIS 处理。如果您可以提供有效的凭据,您只会访问您的应用程序。你得到一个登录对话框弹出?顺便说一句,@BenRobinson 暗示的是,禁用匿名身份验证和启用 Windows 身份验证是不够的,但您还必须从 IIS 禁用表单身份验证。
-
在 IIS 上没有启用任何身份验证(匿名、模拟和表单)。 IIS 中没有 Windows 身份验证选项。没有登录弹出窗口。当我转到我的应用程序的 URL 时,例如 192.168.0.1/TheApp/ - 它会自动更改为 192.168.0.1/TheApp/login.aspx?ReturnUrl=... 我已经是 AD 域的一部分,所以我没有想要弹出任何东西,我只想让它知道我的用户名。
-
您要么部分安装了 IIS,要么没有在正确的应用程序池中设置应用程序。确保您的应用安装在 .Net 4.0 集成应用程序池中
-
@drminnaar 这实际上是我所暗示的。您需要在 iis 中启用 windows 身份验证(或某种形式的身份验证)。如果您没有身份验证,则无法对用户进行身份验证。 Windows 身份验证是一个可选的 iis 组件。如果您没有将其视为一个选项,那么您需要安装它。如何执行此操作取决于服务器上的 Windows 版本。
标签: c# asp.net asp.net-mvc asp.net-mvc-4 authentication