【问题标题】:ASP.NET MVC is asking me to re-authenticate for PNG files but not GIFs or JPEGsASP.NET MVC 要求我重新验证 PNG 文件而不是 GIF 或 JPEG
【发布时间】:2011-04-23 03:41:11
【问题描述】:

出于某种原因,每当我从 application.css 文件中引用 PNG 时,都会提示我输入凭据。但是,我可以毫无问题地从我的图像目录中引用 GIF、JPEG 等。

我的路线是这样设置的:

public static void RegisterRoutesTo(RouteCollection routes) {

        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.IgnoreRoute("elmah.axd");
        routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });

        routes.MapRoute(
            "Default", "",                   
            new { controller = "Home", action = "Index"}  // Parameter defaults
        );

        routes.MapRoute(
            "Session", "{action}",
            new { controller = "Session" },
            new { action = "(login|logout|register)" }
        );

        routes.MapRoute("CatchAll",  "{*catchall}",
            new { controller = "Error", action = "NotFound" });
    }

在我的 CSS 中,我有这个:

.iconLocationLarge { background-image: url(../images/icon_vcarea_48x48.png) !important;}
.iconVCLarge { background-image: url(../images/tb-btn-sprite.gif) !important;}

问题是,如果我使用 PNG 而不是 GIF,系统会提示我再次进行身份验证。为什么?

【问题讨论】:

  • 你得到什么样的提示?您是否对 web.config 进行了任何身份验证更改?
  • 我收到 401 并提示一遍又一遍地进行身份验证(Web 应用程序使用集成身份验证来保护...在 IIS7 上运行)

标签: asp.net css asp.net-mvc image iis


【解决方案1】:

我不知道为什么,但也许你应该为所有静态内容添加忽略路由。

ASP.NET MVC thinks my virtual directory is a controller

【讨论】:

  • 这不起作用。 ASP.NET 仍在尝试处理 .png 文件,而不是像任何其他图像(例如 .gif、.jpeg)一样提供它们
【解决方案2】:

IIS 可以直接提供内容,而无需将请求传递给 ASP.NET。我怀疑在您的情况下,IIS 设置为提供 GIF 和 JPG,但不提供 PNG。有关该主题的讨论,请参见例如 http://mvolo.com/blogs/serverside/archive/2006/11/10/Stopping-hot_2D00_linking-with-IIS-and-ASP.NET.aspx。另见http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/4c840252-fab7-427e-a197-7facb6649106.mspx?mfr=true

假设这是 IIS6,从管理工具打开 IIS 管理器,右键单击本地计算机节点,单击 MIME 类型,检查 PNG 是否注册为“image/png”。您也可以在单个网站级别进行配置。

确保没有其他可能导致问题的过滤器,例如UrlScan ISAPI 过滤器。

【讨论】:

  • 看来是这样。问题是......我需要在设置中包含什么,以便 PNG 像 GIF 和 JPG 一样处理?据我所知,gifs/jpegs 没有什么特别的,所以我假设 png 将以相同的方式处理。
  • 您需要检查您的 IIS 配置,查看更新后的答案。
  • Yes ... PNG 已注册并映射到 image/png。而且我没有看到任何会导致问题的过滤器。
  • 请参阅下面的解决方案。发生这种情况是因为我点击的 PNG 文件设置了加密位。不过,感谢您的 cmets,因为我相信它们对某些时候阅读此线程的人会很有价值。
【解决方案3】:

终于解决了:

我引用的 PNG 文件已加密。就是这样。

在最终用尽 IIS 和 ASP.NET 的所有其他选项后,我注意到我引用的每个 PNG 文件都有属性“AE”(E=加密)。所以解决方案是右键单击文件夹,单击“高级”按钮并取消选择“加密”选项。

【讨论】:

    猜你喜欢
    • 2016-07-06
    • 2012-04-20
    • 2018-08-20
    • 2011-09-13
    • 2021-09-12
    • 1970-01-01
    • 2021-08-01
    • 2023-01-16
    • 2013-04-02
    相关资源
    最近更新 更多