IISではASPを使用する.NET MVCの経験まとめ

26191 ワード

この文章では、異なるバージョンのIISでASPを使用することを学びます.NET MVCとURL Routing.私たちはIIS 7について勉強します.0、IIS6.0以降のIISの処理ポリシー.
ASP.NET MVCフレームワークはURL Routingに依存しており、URL Routingを活用するには、Webサーバ(IIS)の追加構成が必要です.
IISの最新バージョンはWindows 2008のIIS 7です.0、Vistaシステム(Home Basic版を除く)にIIS 7.0をインストールすることもできます.
IIS7.0は、2つの処理要求を提供するモードである統合モードと従来のモードである.IIS 7を使用すると.0の場合、構成は必要ありません.従来のモードを使用する場合は、追加の構成作業が必要です.
Windows 2003にインストールのはIIS 6である.0,Windows Server 2003ならIIS 6を0はIIS 7にアップグレードする.0.しかし、IIS 6.0を使用する場合は、追加の構成作業が必要です.
Windows XPプロフェッショナル版インストールのIIS 5.1バージョンなので、IIS 5も必要です.1追加の構成作業を行います.
最後にWindows 2000で使用するのはIIS 5である.0、IIS 5も必要です.0追加の構成作業を行います.
以下に、異なるバージョンのIISについてまとめます.
IIS7.0(統合モード)-URL Routingは、構成を必要とせずに使用できます.
IIS7.0(従来のモード)-URL Routingを使用するための特別な構成が必要です.
IIS6.0以降-URL Routingを使用するための特別な構成が必要です.
一、集積モードと伝統モード
IIS7.0は、2つのモードを使用して、要求−統合モードおよび従来のモードを処理することができる.統合モードは、より良い、より多くの機能を提供します.従来のモードは、以前のバージョンのIISと後方互換性を持つためである.
リクエストの処理モードは、プログラムプールによって決定されます.プログラムプールをアプリケーションに関連付ける方法を指定することで、Webアプリケーションのリクエスト処理モードを設定できます.手順は次のとおりです.
1.IISサービスマネージャの実行
2.Connectionsウィンドウでアプリケーションを選択
3.Actionsウィンドウで「Basic Settings接続」をクリックして、次の図のように「Edit Application」ダイアログ・ボックスを開きます.
4.アプリケーションpoolを設定します.
デフォルトでは、IISは、DefaultAppPoolとClassicの2つのアプリケーションプールをサポートするように構成する.NET AppPool.DefaultAppPoolに設定すると、統合要求処理モードでアプリケーションが実行されます.Classicを設定すると.NET AppPoolでは、従来のリクエスト処理モードでアプリケーションが実行されます.
 
なお、Editアプリケーションダイアログボックスの「Select」ボタンをクリックして、プログラムプールとアプリケーションの関連関係を変更し、リクエスト処理モードを変更します.ただしASP.NETアプリケーションは、従来のモードから統合モードに移行する際に、いくつかの互換性の問題を解決する必要があります.詳細については、次の文書を参照してください.
Upgrading ASP.NET 1.1 to IIS 7.0 on Windows Vista and Windows Server 2008 --http://learn.iis.net/page.aspx/270/upgrading-aspnet-11-to-iis7-on-windows-vista--windows-server-2008/
ASP.NET Integration With IIS 7.0 - http://learn.iis.net/page.aspx/243/aspnet-integration-with-iis7/
もし私たちのASP.NETアプリはDefaultAppPoolを使用しているので、何の構成もせずにURL Routing機能を使用できます.ただしASP.NETプログラムはClassicとして構成する.NET AppPool、それでは引き続き下を見てください.
二、旧バージョンのIISでASPを使用する.NET MVC
IISのバージョン番号がIISより大きい場合.0が低いかIIS 7を使用する.0従来のモデルでは、2つの選択肢があります.
1、ルーティングテーブルを修正し、ファイル拡張子を加える.もし私たちが/store/DetailsのURLアドレスを/storeに変えたら.aspx/Details
2、wildcard script mapを作成する.wildcard script mapでは、各リクエストをASPにマッピングします.NETフレーム上.
もし私がサーバーの構成を変更できないならば、私達は第1の方式を採用するしかなくて、もし私達がURLアドレスを変更したくないならば、私達は第2の方式を採用しなければならなくて、IIS webサーバーを構成します.
これでは、旧バージョンIISでASPを使用する2つの方法について説明します.NET MVCの方法:
(一)ルーティングテーブルに拡張子を追加する.
URL Routingを旧バージョンIISで実行できるようにする最も簡単な方法はGlobalを開くことである.asaxファイル、ルーティングテーブルを変更します.ルーティング・テーブルのコードは次のとおりです.
Listing 1 – Global.asax (unmodified)

  
  
  
  
  1. using System;   
  2. using System.Collections.Generic;   
  3. using System.Linq;   
  4. using System.Web;   
  5. using System.Web.Mvc;   
  6. using System.Web.Routing;   
  7. namespace MvcAppCS   
  8. {        
  9.    public class GlobalApplication : System.Web.HttpApplication        
  10.    {             
  11.     public static void RegisterRoutes(RouteCollection routes)             
  12.     {                  
  13.      routes.IgnoreRoute("{resource}.axd/{*pathInfo}");                  
  14.      routes.MapRoute(                       
  15.      "Default",// Route name                       
  16.      "{controller}/{action}/{id}",// URL with parameters                       
  17.      new { controller = "Home", action = "Index", id = "" } // Parameter defaults                          
  18.      );             
  19.     }             
  20.     protected void Application_Start()             
  21.     {                 
  22.     RegisterRoutes(RouteTable.Routes);             
  23.     }        
  24.    }   
  25. }  

デフォルトのルーティング構成では、以下のULRアドレスをルーティングできます.
/Home/Index
/Product/Details/3
/Product
しかし残念なことに、旧バージョンのIISはこのような要求をASPに渡すことはない.NETフレームワークのため、これらの要求はコントローラにルーティングされません.たとえば、/Home/IndexというURLを要求すると、エラーページのヒントが表示されます.以下の図
 
旧版のIISは、特定の拡張子を持つURL要求のみをASPに送信する.NETフレーム.例えば/SomePage.aspxリクエストはASPにマッピングする.NETフレームワーク/SomePage.htmはASPにマッピングする.NETフレーム.
したがって、URL Routingを正常に動作ようにするには、ASPにマッピングするためにファイル拡張子を含むデフォルトのルーティングを変更する必要があります.NETフレームで行きます.ASPにマッピングできる.NETフレームワークの拡張子は.aspx .axd和ashx
修正後のGlobal.asaxファイルは以下の通りです
Listing 2 – Global.asax (modified with extensions)

  
  
  
  
  1. using System;   
  2. using System.Collections.Generic;   
  3. using System.Linq;   
  4. using System.Web;   
  5. using System.Web.Mvc;   
  6. using System.Web.Routing;   
  7. namespace MvcAppCS   
  8. {        
  9.    public class GlobalApplication : System.Web.HttpApplication        
  10.    {             
  11.     public static void RegisterRoutes(RouteCollection routes)             
  12.     {                  
  13.      routes.IgnoreRoute("{resource}.axd/{*pathInfo}");                  
  14.      routes.MapRoute(                       
  15.      "Default"// Route name                       
  16.     "{controller}.aspx/{action}/{id}"// URL with parameters                       
  17.      new { controller = "Home", action = "Index", id = ""}// Parameter defaults                  
  18.      );             
  19.     }             
  20.     protected void Application_Start()             
  21.     {                  
  22.      RegisterRoutes(RouteTable.Routes);             
  23.     }        
  24.    }   
  25. }  

注意:Globalを修正しました.asaxファイルを再コンパイルした後、ASPを再コンパイルすることを忘れないでください.NET MVCアプリケーション.
上のコードでは、デフォルトのルーティングを次のフォーマットに変更しました.
{controller}.aspx/{action}/{id}
この変更により、ASP.NET MVCアプリケーションルーティングは次のような形式しかマッピングできません
/Home.aspx/Index
/Product.aspx/Details/3
/Product.aspx
ルーティングテーブルを変更した後、プログラム内のすべてのハイパーリンクのURLアドレスも変更されていることを確認します.すなわち、すべてのハイパーリンクナビゲーションアドレスに含むことを保証する.aspx拡張子.Htmlを使うとActionLink()メソッドで生成されるハイパーリンクは、ハイパーリンクを変更する必要はありません.
(二)Wildcard Script Mapの作成
ASPを修正したくないならNET MVCアプリケーションのURLアドレスは、Webサーバにアクセスすることができます.wildcard script mapを作成することで、すべてのリクエストをASPにマッピングすることができます.NETフレームで行きます.これにより、デフォルトのテーブルの変更は回避されます.
明らかにするには、画像、ASPページ、HTMLページを1枚要求するのではないかと心配して、IISは各要求に対して処理します.そのためwildcar script mapを使用すると、操作がより暗黙的になります.
IIS 7を有効にする.0のwildcard script map
1.Connectionsウィンドウでアプリケーションを選択
2.Featuresビューが選択されていることを確認します.
3.Handler Mappingsボタンをダブルクリックします.
4.図のように、Add Wildcard Script Mapをクリックします.
5.aspnet_を入力isapi.dllファイルのパス
6.NameテキストボックスにMVCを入力
7.OKボタンをクリックします.
 
IIS 6.0でwildcar script mapを作成するには:
1、サイトを右クリックして、属性を選択する
2、「ホームディレクトリ」タブを選択
3、「コンフィギュレーション」ボタンをクリック
4、「Mappings」タブを選択
5、「Insert」ボタンをクリックし、下図のように
6、Executeableテキストボックスにaspnet_を入力するisapi.dllファイルが存在するパス
7、Verify that file existsチェックボックスの前のチェックを外します.
8、OKボタンをクリック
 
wildcard script mapを構成したら、デフォルトのルーティングテーブルを使用して次のURLアドレスを処理できます.
/Home/Index
/Product/Details/3
/Product
まとめ
この記事では、旧バージョン(またはIIS 7.0従来モード)のIISでASP.NET MVCを使用する方法について説明します.URL Routingと旧バージョンIISの連携作業の問題を解決するには、デフォルトのルーティングテーブルを変更するかwildcard script mapを作成するかの2つの方法について説明します.
最初の方法はASPを修正する必要があります.NET MVCアプリケーションでは、Webサーバを操作する必要がなく、プログラム内のルーティングテーブルを変更するだけで済むというメリットがあります.
2つ目の方法はwildcard script mapを作成する必要があります.この方法のメリットは、コードを変更する必要はありませんが、欠点はASPに影響を与えることです.NET MVCプログラムの性能.