2010-10-09 39 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

相關問題