出于某种原因,只要我从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,则会提示我再次进行身份验证。为什么呢?
答案 0 :(得分: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过滤器。
答案 1 :(得分:2)
终于解决了:
我引用的PNG文件已加密。就是这样。
最后用IIS和ASP.NET耗尽了所有其他选项后,我注意到我引用的每个PNG文件都有“AE”属性(E =加密)。所以解决方案是右键单击文件夹,单击“高级”按钮并取消选择“加密”选项。
答案 2 :(得分:0)
我不知道为什么,但可能你应该为所有静态内容添加忽略路由,无论如何。