2011-01-25 19 views
2

我有一個看起來像這樣的視圖 {{img src =「/ Scenario/Status/id」alt = 「狀態」/}}在IIS上託管MVC應用程序時,IIS上沒有顯示圖像... ASP.NET開發服務器上的服務器很好

(替換<>這些{}上文)

,這是在控制器

public ActionResult Status(int? id) 
    { 
     // Calculate the status 
     int no = new Random().Next(0, 2); 
     string file = "green.jpg"; 
     if (no == 0) 
     { 
      file = "red.jpg"; 
     } 
     else if (no == 1) 
     { 
      file = "yellow.jpg"; 
     } 
     else if (no == 2) 
     { 
      file = "green.jpg"; 
     } 
     var path = Server.MapPath("/Content/images/"); 
     var filePath = path + file; 

     return new FileContentResult(System.IO.File.ReadAllBytes(filePath), "image/jpeg"); 
    } 

的動作的代碼時,我上的VisualStudio運行這只是正常。但是當我將它部署到本地IIS時,我沒有看到這些圖像。 我檢查了在IIS下的Windows功能中選中了「StaticContent」選項,並且在IIS上啓用了MIME類型。從Visual Studio發佈後,我還檢查了* .jpg文件存在於我的應用程序的「inetpub」文件夾下。由於我使用虛擬路徑圖像和不hardcofing文件名,它應該工作...

我只是嘗試這樣做

{{IMG SRC =「../內容/圖片/ Green.jpg」 ALT =「狀態」 /}}和工作太.. :(

還有什麼地方出錯了?

+0

當你部署到IIS你部署到虛擬目錄或網站根目錄? – Brook 2011-01-25 04:34:19

回答

2

一個快速的方法來獲得更多更深入的問題是設置一個斷點在Application_Error方法的global.asax,並查看當圖像請求進入時引發了什麼異常。

如果您已在IIS中的虛擬目錄下部署,則需要使用Server.MapPath("~/Content/images/") Asp.Net將用應用程序根目錄代替~

+0

那沒有工作......並且我沒有看到我的Global.asax.cs文件中的一個名爲Application_Error的方法 – vicky 2011-01-25 18:24:21

+0

您可以創建它`protected void Application_Error(object sender,EventArgs e){}`。檢查異常`Server.GetLastError()`應該產生一個有用的異常。 – Brook 2011-01-25 20:04:20

0

它被部署到一個虛擬目錄C:\的Inetpub \ wwwroot的\測試網站.... 那是第eproblrm

2

發現在在子文件夾中理解過程根網站上承載的應用程序,用於顯示圖像的溶液IIS

這個工作..

IMG SRC = 「<%= Url.Content(」 〜/主頁/ GetRainfallChart 「)%>」 ALT = 「圖」

相關問題