1

従来の asp.net mvc Web アプリ (.net 4) に対処する必要があります。Visual Studio 2010 の開発サーバーを使用する場合は、カスタマイズされたルーティングが使用されます。ただし、代わりに (デバッグ中に) iis を使用すると、動作しないようです (デバッグ中に iis を使用したことはありません)。

ここで提供される答えは役に立たないようです。私はすでに使用しています:

<system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>

ルーティングが機能しない理由は他にありますか? ありがとう!

4

1 に答える 1

4

一般的な投稿ですが、残念ながら Internet Information System は多数の構成の問題を引き起こす可能性があります。これはおそらく最大の落とし穴です。展開サーバー、ローカル サーバー、または運用サーバーで起動すると、結果が同じに見えないことがあります。

私は Internet Information System Six を使用します。これは Seven および Eight に似ていますが、特定の機能が欠けているだけです。

ASP.NET MVC Web アプリケーションのプロジェクト内で、プロジェクトを右クリックして [プロパティ] を選択します。

次の単語を示すタブが表示されます: *Web**

  • このタブの下部にある [ IIS Web サーバーを使用]が選択されていることを確認します。
  • そこにプロジェクトの URLを入れたいと思うでしょう。

このフィールドは次のようになります*http://localhost/ApplicationName*。ここで本質的に行っていることは、IIS のプロジェクト ディレクトリをマッピングすることです。各 IIS サイトが次の内部にサイトを格納していることがわかります。

C:\inetpub\wwwroot

これがルート サイト フォルダで、IIS がすべてのサイト コンポーネントを参照します。** プロジェクト内のこの仮想ディレクトリは、リストされている IIS 構成アイテムと実際には異なることに注意してください。**

次に、Internet Information System を開き、ファイル拡張子を設定します。したがって、IIS で何かを行う前に、ASP.NET MVC インストーラーを構成する必要があります。への .mvc 拡張子へのマッピング (ISAPI) を構成する必要がありますaspnet_isapi.dllこの手順は、IISが .mvc 拡張子を使用してルーティング要求を ASP.NETに渡すために必要です。

良いブログ投稿から、彼は次のように述べています。

拡張子のない URL を使用する予定がある場合は、このセクションをスキップできますが、拡張子のない URL を設定する際に知っておく必要がある情報が含まれているので、読んでおくと役立つ場合があります。.mvc を ASP.NET にマッピングする

.mvc URL 拡張子を使用する予定で、ASP.NET MVC がインストールされていないマシンに IIS 6 を展開する場合は、次の手順を実行してこのマッピングを作成する必要があります。

.mvc の代わりに .aspx 拡張子を使用する利点の 1 つは、.aspx 拡張子のマッピングについて心配する必要がないことです。マシンに ASP.NET が正しくインストールされていると仮定すると、既にマップされているはずです。

それ以外の場合は、仮想アプリケーション ノード (この場合は IIS6DemoWeb) を右クリックして [プロパティ] を選択します。次のダイアログが表示されます。

ダイアログリスト

[仮想ディレクトリ] タブが表示されていることを確認し、 [構成]を選択します。これにより、ルート Web サイトへの変更が許可されます。これにより、Application Configuration Dialogが表示されます。これにより、アプリケーションを物理的にマッピングできます。それを使用するので、それ.mvcを選択します。

.mvcリストに見つからない場合は、次のデータ リンク ライブラリを参照できます。

c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll

アプリケーションを実行する前に、適切なファイル拡張子を探すようにデフォルト ルートを更新する必要があります。拡張機能 Global.asax.csを使用していることを確認する必要があります。.mvc

次のようなメソッドを実装します。

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

  routes.MapRoute(
    "Default",
    "{controller}.mvc/{action}/{id}",
    new { action = "Index", id = "" }
  );

  routes.MapRoute(
    "Root",
    "",
    new { controller = "Home", action = "Index", id = "" }
  );

}

これにより、サイトが適切に表示されるようになります。これは非常に一般的で幅広い例です。しかし、うまくいけば、これはあなたを良い方向に導きます.


アップデート:

インターネット情報システムセブンを利用するにあたっては、次のことに注意してください。

  • サイト構成
  • アプリケーション プール
  • データベース構成

これら 3 つの項目は、不適切な構成の一般的な原因です。

本当に素晴らしいブログはここにあります: 別の素晴らしい記事はここにあります:

ただし、この記事はあなたの頭に直接釘を打つはずです:

私が述べたように、上記の詳細はあなたの問題を解決するはずです. しかし、IIS 7 の導入により、要求を許可する 2 つの完全に異なる方法があります: IntegratedClassicです。

主な違いは、統合された方がパフォーマンスが向上し、より多くの機能が含まれることです。Classicは下位互換性のために設計されていますルート リクエストの処理方法は、アプリケーション プールによって決まります。これが正しく構成されていません。うまくいきません。

  1. インターネット インフォメーション サービス マネージャーを起動します。
  2. [接続] ウィンドウで、アプリケーションを選択します
  3. [アクション] ウィンドウで、[基本設定] リンクをクリックして、[アプリケーションの編集] ダイアログ ボックスを開きます。
  4. 選択したアプリケーション プールをメモします。

デフォルトでは、IIS は DefaultAppPool と Classic .NET AppPool の 2 つのアプリケーション プールをサポートするように構成されています。DefaultAppPool が選択されている場合、アプリケーションは統合要求処理モードで実行されています。Classic .NET AppPool が選択されている場合、アプリケーションはクラシック要求処理モードで実行されています。

アプリケーション プールの編集 図 1.1

そのボックス内から、「アプリケーションの編集ダイアログ ボックス」内で処理モードを変更できます。

この追加情報があなたの目標達成に役立つことを願っています。最初の 2 つのブログは IIS を避けたもので、3 つ目のブログは特に IIS 7 に焦点を当てています。質問があればお知らせください。

于 2013-02-25T19:54:41.443 に答える