1

わかりましたので、プロジェクトをローカル IIS にデプロイすると問題なく動作します。オンライン ホストにデプロイすると、ディレクトリ リストしか表示されません。

(

VisualStudio 2012、mvc3、.net 4.5 Publish to Web 設定を使用:

  1. 公開方法:FTP
  2. サーバ:www."mysite".co.za
  3. サイト パス: "空白" (私の理解では、アプリ ディレクトリに直接公開しているため、ルートには bin、views、global.asax、web.config が含まれています)
  4. リンク先 URL:http://www."mysite".co.za
  5. データベースはすでに稼働しており、web.config で構成されています

)

Views ディレクトリをクリックすると、404 エラーが発生します。

次に行ったのは、global.asax が実行されるかどうかを確認することだったので、RegisterRoutes で例外をスローするコードを追加しました (Application_Start() から呼び出されます)。

    public static void RegisterRoutes(RouteCollection routes)
    {      
      routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

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

      throw new Exception("This is my custom error: Currently in RegisterRoutes");      
    }

そして本当のボブ、私は次のようになります(ただし、それでもビューディレクトリをクリックした場合のみ):

「/」アプリケーションでサーバー エラーが発生しました。

これは私のカスタム エラーです: 現在 RegisterRoutes にあります

説明:現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。 例外の詳細: System.Exception: これは私のカスタム エラーです: 現在 RegisterRoutes にあります

私の質問: 1. ルートが global.asax を取得しないのはなぜですか? 2. routes.MapRoute(...) の後でコードの実行が終了する場所を確認するにはどうすればよいですか? (つまり、 throw Exception を削除した後 ;) )

よろしく

4

2 に答える 2

1

これもたまたまありました。通常、これは Web 構成で設定が欠落していることが原因です。具体的には、この質問が答えを提供しました。Web 構成を編集して、すべての要求に対してすべてのマネージド モジュールをロードします。

<system.webServer><modules runAllManagedModulesForAllRequests="true"></modules></system.webServer>
于 2013-09-11T05:33:25.173 に答える
0

サーバーに IIS を登録していない可能性があります。を使用して登録しaspnet_regiis -i、IIS のアプリケーション プールで .net バージョンを確認してください。

于 2013-09-11T05:32:16.190 に答える