2010-10-09 42 views
4

出于某种原因,重新进行身份验证,我从我的application.css文件中引用PNG任何时候,我得到提示凭据。但是,我可以从我的images目录中引用GIF,JPEG等,而不会出现问题。ASP.NET MVC要求我的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

你会得到什么样的提示?你有没有对你的web.config进行auth更改? – Nik 2010-10-09 18:17:47

+0

我得到一个401,并提示一遍又一遍地进行身份验证(网络应用程序使用IIS7上的集成身份验证进行安全保护) – wgpubs 2010-10-11 20:40:28

回答

2

终于解决了:

我引用的PNG文件被加密。这就对了。

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

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被注册为“图像/ PNG”。您也可以在个人网站级别进行配置。

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

+0

这似乎是这种情况。问题是...我需要在安装程序中包含哪些内容才能让PNG像GIF和JPG一样处理?据我所知,没有什么特定的gifs/jpegs,所以我假设png会以相同的方式处理。 – wgpubs 2010-10-11 18:41:49

+0

你需要检查你的IIS配置,看到更新的答案。 – 2010-10-11 19:36:51

+0

是... PNG已注册并映射到image/png。而且我没有看到任何会导致问题的过滤器。 – wgpubs 2010-10-11 20:39:22