2009-02-17 110 views
17

我目前正在使用MVC ASP.NET的RC構建我的應用程序,該應用程序現在不顯示任何內容。 我global.ascx的路線是典型的即我在IIS上部署MVC應用程序時得到空白頁面

routes.MapRoute(
      "Default",            // Route name 
      "{controller}.aspx/{action}/{id}",       // URL with parameters 
      new { controller = "Home", action = "Index", id = "" } // Parameter defaults 
     ); 
     routes.MapRoute(
      "Root", 
      "", 
      new { controller = "Home", action = "Index", id = "" } 
     ); 

任何一個可以弄清楚爲什麼它顯示我

只有空白頁

對不起,我忘記提及的是IIS 6

有趣的是,它也在我的本地IIS上工作(即,本地內置的VS &標準與XP)以及

回答

1

我解決了這個問題,主要的問題是不同版本的MVC框架。生產服務器有MVC Beta,而我已經安裝了MVC RC1。所以只要我在服務器上安裝RC1以及運行mvc擴展註冊腳本,一切正常感謝您的幫助球員

0

什麼是服務器環境?如果它不是IIS7/Server 2008,那麼爲了讓路由正常工作,你還必須做其他的調整,儘管如果情況如此,你可能會得到一個錯誤頁面,而不是空白頁面。

0

如果是生產服務器出現問題,則可能是角色權限。您需要確保應用程序所使用的所有文件夾和文件都允許讀取(並且在某些情況下,如果使用日誌的話)寫入IIS正在使用的角色身份。

通常情況下,身份IIS使用在網站屬性 - >目錄安全性 - >編輯(身份驗證和訪問控制)。如果您不想讓網絡上的任何計算機訪問該網站,則應該關閉「啓用匿名訪問」。如果你確實想要這樣做,這將是你需要在你的webapp文件夾和文件中提供訪問的身份。否則,您可能需要訪問包含您想要訪問的用戶身份的角色。

+0

我明白你的意思,但我沒有使用任何身份驗證,因爲我甚至通過web.config禁用身份驗證,只有身份驗證我需要的是運行數據庫實例。 我沒有使用任何日誌記錄以及 – Gripsoft 2009-02-17 18:19:27

+0

我想,也許IIS認證在web.config中的身份驗證設置分開的東西,雖然我不知道。我認爲至少值得嘗試打開IIS中的匿名訪問並將該身份添加到webapp文件夾和文件。 – Daniel 2009-02-17 18:26:31

+0

如果仍然不能與這些設置工作,那麼我不知道它可能是些什麼,因爲我只看到一個空白頁爲您的描述,當我有權限設置問題。 – Daniel 2009-02-17 18:29:31

0

從外觀上看,如果你打算使用像/Home.aspx這樣的網址,但是如果你只是去了/ url,那麼ASP.net不知道如何處理網址。它會嘗試匹配IIS默認頁面,如index.html,default.aspx,index.aspx等。如果沒有發現任何內容,那麼請求不會得到任何地方。嘗試創建一個default.aspx(或路徑中的任何其他索引文件),然後在page_load中執行response.redirect("~/Home.aspx")

如果不工作,我想看看這個source。 IIS 6和MVC不能很好地發揮作用的主要原因之一是默認情況下,IIS 6不具有映射到ASP.net dll的通配符*。

我確定這是產品服務器配置的一種方式,您可以對XP實例和產品進行任何比較嗎?

0

您是否在生產服務器上的web.config中定義了HTTP處理程序和模塊?

<httpHandlers> 
     <remove verb="*" path="*.asmx"/> 
     <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/> 
     <add verb="*" path="*.mvc" validate="false" type="System.Web.Mvc.MvcHttpHandler, System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
    </httpHandlers> 
    <httpModules> 
     <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
    </httpModules> 

在IIS6,URL必須包含.mvc(如/Products.mvc/ListAll)。檢查這些指南進行適當的IIS 6的配置和擴展.mvc解決方法:

Deploying ASP.NET MVC to IIS 6

Using ASP.NET MVC on IIS 6 without the .MVC Extension

19

當你在global.asax中有錯誤處理設置時,你也會得到一個空白頁面和一般的東西是錯誤的(就像一個無法找到的程序集)。

當您在global.asax中禁用它時,您可以看到服務器錯誤。 不要忘記修復這些初始錯誤後再次啓用它。

protected void Application_Error(object sender, EventArgs e) 
{ 
    Exception exception = Server.GetLastError(); 
    RouteData routeData = new RouteData(); 
    routeData.Values.Add("controller", "ErrorController"); 
    routeData.Values.Add("action", "HandleTheError"); 
    routeData.Values.Add("error", exception); 

    Response.Clear(); 
    Server.ClearError(); 

    IController errorController = new ErrorController(); 
    errorController.Execute(new RequestContext(
     new HttpContextWrapper(Context), routeData)); 
} 
3

當發生特別的地方錯誤的空白頁顯示 - 在我的情況,這是一個MethodNotFoundException ...

要查看錯誤,請確保您啓用「HTTP錯誤」和「HTTP重定向「服務在」Web服務器(IIS)「角色

2

正常情況下,當我得到它時,這是因爲我忘記了將以下內容添加到Web.config中,然後在IIS7上進行開發後部署到IIS6(或IIS Express 7附帶Visual Studio):

<system.webServer> 
    <modules runAllManagedModulesForAllRequests="true" /> 
</system.webServer> 
0

這意味着你在MVC應用程序中拋出了一個Exception,但是你的MVC中可能有一個類正在捕獲,過濾和隱藏這些異常。那些例外仍然被拋出,但你不能看到造成他們的是什麼。 MVC仍然重新路由頁面請求,但由於隱藏的異常而沒有返回任何內容。你不能停止這個問題,直到你看到異常被拋出。在關閉MVC的異常處理過濾器之前,您無法在網頁中看到異常。

可能阻止您看到異常的一件事是當網站首次加載時,GlobalFilterCollection通過global.asax中的MVC篩選器調用。您通常可以在Global.asax文件中找到這些調用。該文件通常在網站首次加載時及其事件時調用HttpApplication對象。在它的事件中,它會加載開發人員添加的默認MVC路線,但也可以加載處理站點範圍異常處理的過濾器。開發人員經常通過global.asax中的過濾器來處理異常處理,認爲它們智能地處理來自用戶的異常和問題,但這是一個錯誤。如果你在那裏發現一個過濾器,只是將它們評論出來。突然之間,所有錯誤都會在您的HTML頁面中出現。

然後,您可以排除故障!祝你好運!

0

這也發生在我身上的時候:

1)我添加了一個CompressAttribute添加Gzip已當瀏覽器接受它。

response.AppendHeader("Content-Encoding", "gzip"); 
        response.Filter = new GZipStream(response.Filter, CompressionMode.Compress); 

2)I被修改輸出HTML來改變顯示的電話號碼:

response.Filter = new OutputHtmlReplacer(response.Filter, phoneNumber); 

其中OutputHtmlReplacer是從MemoryStream的繼承

所以一類,將溶液:

1)驗證標題並檢查我們是否應用壓縮。

2)如果是,則新的OutputHtmlReplacer響應過濾器必須由GzipStream包裝。

相關問題