【问题标题】:Website asks for "Authentication Required" on an MVC controller, but not others网站在 MVC 控制器上要求“需要身份验证”,但在其他控制器上不要求
【发布时间】:2014-04-16 10:33:45
【问题描述】:

我有一个 asp.net C# MVC 网站。它使用 SimpleAuthentication 和表单身份验证。一切正常,需要人们登录才能访问页面。但是,我有一个名为“ReportsController”的控制器。每当您转到此控制器中操作的 URL 时,它总是会在浏览器窗口中弹出“需要身份验证”。

它只针对这个控制器而不是其他任何控制器。 URL 将是“www.domain.com/reports”。当我从 IIS 和我的开发服务器运行时,这个 URL 可以正常工作,但不能在我的实时服务器上运行。这是运行 IIS7。

我检查了我的 web.config,它肯定设置为 Forms 身份验证而不是 Windows。

任何人都知道为什么以“/Reports”开头的任何网址都不起作用。我猜这是特定于服务器的东西,例如 IIS 设置或 web.config 更改,但我不知道这是什么。

namespace ProjectName.Controllers
{
    public class ReportsController : Controller
    {
        public ActionResult Index()
        {
            throw new SystemException("here");

            return View();
        }
    }
}

Web.config:

<authentication mode="Forms">
  <forms loginUrl="~/" timeout="2880" />
</authentication>

【问题讨论】:

  • 您的报表控制器是否在控制器上具有任何自定义属性或可能应用过滤器以实现安全性的操作?
  • 我在动作中使用了 [Authorize],但我暂时尝试将其注释掉,但没有得到任何乐趣。
  • 我已将代码添加到问题中,以便您查看。控制器或动作没有什么特别之处。
  • 不确定 Reports 是否可以成为 IIS 的保留字?您是否尝试使用任何前缀或后缀更改报告控制器的名称,例如 MainReports 或 ReportsOut?
  • 我也有这个想法,但它在我的机器和开发服务器上运行良好。所有其他控制器工作正常。

标签: c# model-view-controller iis-7 routing


【解决方案1】:

所以事实证明 Sql Server Reporting Services 正在服务器上运行。这控制了该服务器上所有网站上的“/Reports”URL。

我没有使用 SQL Server Reports,所以我转到服务器上的“Reporting Services 配置管理器”并删除了它正在侦听的 IP 地址和端口。如果您仍然需要使用它,您也可以更改它使用的 URL。

【讨论】:

  • 由于某种原因,两天内我无法接受自己的答案,但这解决了它。
  • 同样的问题 - 我不知道报告在其他地方运行。总是有事的
  • 真的很高兴我找到了这个!这几天我一直在摸不着头脑!
  • 非常感谢。你救我。如果可能的话,我想转移我所有的积分;)
猜你喜欢
  • 2014-07-08
  • 2015-06-24
  • 2016-09-23
  • 2013-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-04
  • 1970-01-01
相关资源
最近更新 更多