IIS中使用ASP.NETMVC的示例分析

IIS中使用ASP.NET MVC的示例分析,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

創(chuàng)新互聯(lián)公司-專(zhuān)業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性?xún)r(jià)比興縣網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式興縣網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋興縣地區(qū)。費(fèi)用合理售后完善,十余年實(shí)體公司更值得信賴(lài)。

在這篇文章中我們學(xué)習(xí)在不同版本的IIS中使用ASP.NET MVC和URL Routing。我們學(xué)習(xí)針對(duì)IIS7.0、IIS6.0和更早版本的IIS的處理策略。

ASP.NET MVC框架依賴(lài)于URL Routing,要充分利用URL Routing,我們需要對(duì)Web服務(wù)器(IIS)進(jìn)行一些額外的配置。

IIS的***版本是Windows2008中的IIS7.0,我們也可以Vista系統(tǒng)中(除了Home Basic版)安裝IIS7.0。

IIS7.0是提供了兩種處理請(qǐng)求的模式-集成模式和傳統(tǒng)模式。如果使用IIS7.0的話(huà),那我們不需要做任何配置,如果要使用傳統(tǒng)模式的話(huà)則需要我們做一些額外的配置工作。

在Windows2003中安裝的是IIS6.0,如果是Windows Server 2003的話(huà),那我們可以把IIS6.0升級(jí)到IIS7.0。但如果我們使用IIS 6.0的話(huà),那需要我們做一些額外的配置工作。

Windows XP專(zhuān)業(yè)版安裝的IIS5.1版本,因此我們也需要對(duì)IIS5.1進(jìn)行一些額外的配置工作。

***Windows2000使用的是IIS5.0,我們也需要對(duì)IIS5.0進(jìn)行一些額外的配置工作。

下面是我們對(duì)不同版本IIS的總結(jié):

IIS7.0(集成模式)- 不需要作任何配置就可以使用URL Routing。

IIS7.0(傳統(tǒng)模式) - 需要我們進(jìn)行特別配置來(lái)使用URL Routing。

IIS6.0或更低版本 - 需要我們進(jìn)行特別配置來(lái)使用URL Routing。

一、集成模式與傳統(tǒng)模式

IIS7.0可以使用兩種模式來(lái)處理請(qǐng)求-集成模式和傳統(tǒng)模式。集成模式提供更好、更多的功能;傳統(tǒng)模式則是為了向后兼容較早版本的IIS。

請(qǐng)求的處理模式是由程序池決定的,我們可以通過(guò)指定程序池與應(yīng)用程序關(guān)聯(lián)的方式來(lái)設(shè)置web應(yīng)用程序的請(qǐng)求處理模式。步驟如下:

1. 運(yùn)行IIS服務(wù)管理器

2. 在Connections窗口選擇一個(gè)應(yīng)用程序

3. 在Actions窗口中單擊Basic Settings連接打開(kāi)Edit Application對(duì)話(huà)框,如下圖所示。

4. 設(shè)置Application pool。

默認(rèn)情況下,IIS被配置為支持兩種應(yīng)用程序池:DefaultAppPool和Classic .NET AppPool。如果設(shè)為DefaultAppPool,那我們的應(yīng)用程序就運(yùn)行在集成請(qǐng)求處理模式下。如果設(shè)置Classic .NET AppPool,那我們的應(yīng)用程序就運(yùn)行在傳統(tǒng)的請(qǐng)求處理模式下。

IIS中使用ASP.NET MVC的示例分析

需要注意的是,我們通過(guò)點(diǎn)擊Edit Application對(duì)話(huà)框中的”Select”按鈕來(lái)改變程序池與應(yīng)用程序的關(guān)聯(lián)關(guān)系,來(lái)修改請(qǐng)求處理模式。但ASP.NET應(yīng)用程序在從傳統(tǒng)模式遷移到集成模式的時(shí)候需要解決幾個(gè)兼容性的問(wèn)題。更多的信息請(qǐng)參見(jiàn)下列文章:

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應(yīng)用程序使用的是DefaultAppPool,那我們不用做任何配置就可以使用URL Routing功能了。但如果ASP.NET程序被配置為Classic .NET AppPool,那請(qǐng)繼續(xù)向下看。

二、在舊版本的IIS中使用ASP.NET MVC

如果我們使用的IIS版號(hào)比IIS7.0低或者使用的是IIS7.0傳統(tǒng)模式,那我們有兩種選擇:

1、 修改路由表,加上文件擴(kuò)展名。如我們把/Store/Details的URL地址換為/Store.aspx/Details

2、 創(chuàng)建wildcard script map。wildcard script map使我們把每個(gè)請(qǐng)求都映射到ASP.NET框架上。

如果我不能修改服務(wù)器的配置,那我們只好采用***種方式,如果我們不想修改URL地址,那我們必須采用第二種方式,去配置IIS web服務(wù)器。

在這是我們分別討論兩種在舊版本IIS中使用ASP.NET MVC的方法:

(一)向路由表中加擴(kuò)展名。

要使URL Routing能夠在舊版本IIS上運(yùn)行的最簡(jiǎn)單的方法就是打開(kāi)Global.asax文件,修改我們的路由表。路由表的代碼如下:

Listing 1 – Global.asax (unmodified)

using System;   using System.Collections.Generic;   using System.Linq;   using System.Web;   using System.Web.Mvc;   using System.Web.Routing;   namespace MvcAppCS   {           public class GlobalApplication : System.Web.HttpApplication           {                 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 = "" } // Parameter defaults                               );                 }                 protected void Application_Start()                 {                     RegisterRoutes(RouteTable.Routes);                 }           }   }

默認(rèn)的路由配置可以對(duì)我們下面的ULR地址進(jìn)行路由:

/Home/Index

/Product/Details/3

/Product

然而不幸的是,舊版本的IIS不會(huì)把這樣的請(qǐng)求傳遞給ASP.NET框架,因此這些請(qǐng)求也不會(huì)被路由到控制器。比如我們請(qǐng)求/Home/Index這個(gè)URL時(shí),會(huì)產(chǎn)生一個(gè)錯(cuò)誤頁(yè)面的提示。如下圖

IIS中使用ASP.NET MVC的示例分析

舊版的IIS只能把那些具有特定擴(kuò)展名的URL請(qǐng)求發(fā)送給ASP.NET框架。比如/SomePage.aspx請(qǐng)求會(huì)被映射到ASP.NET框架,而/SomePage.htm則不會(huì)被映射到ASP.NET框架。

因此,要想使URL Routing能夠正常工作,我們必須要修改默認(rèn)路由,使其包含文件擴(kuò)展名,以映射到ASP.NET 框架中去。能夠映射到ASP.NET框架中的擴(kuò)展名有.aspx .axd 和.ashx

修改后的Global.asax文件如下所示

Listing 2 – Global.asax (modified with extensions)

using System;   using System.Collections.Generic;   using System.Linq;   using System.Web;   using System.Web.Mvc;   using System.Web.Routing;   namespace MvcAppCS   {           public class GlobalApplication : System.Web.HttpApplication           {                 public static void RegisterRoutes(RouteCollection routes)                 {                       routes.IgnoreRoute("{resource}.axd/{*pathInfo}");                       routes.MapRoute(                            "Default", // Route name                           "{controller}.aspx/{action}/{id}", // URL with parameters                            new { controller = "Home", action = "Index", id = ""}// Parameter defaults                       );                 }                 protected void Application_Start()                 {                       RegisterRoutes(RouteTable.Routes);                 }           }   }

注意:在修改完Global.asax文件后要記得重新編譯我們的ASP.NET MVC應(yīng)用程。

在上面的代碼中,我們做了一個(gè)很小但很重要的修改,我們把默認(rèn)路由修改為如下格式:

{controller}.aspx/{action}/{id}

由于這種更改,因此ASP.NET MVC應(yīng)用程路由只能映射下面這種形式了

/Home.aspx/Index

/Product.aspx/Details/3

/Product.aspx

當(dāng)我們修改完路由表后,我們還要確保程序中的所有超連接的URL地址也都已做相應(yīng)的修改。換句話(huà)說(shuō),要保證所有的超鏈接導(dǎo)航地址中都包含.aspx擴(kuò)展名。如果我們使用Html.ActionLink()方法生成的超鏈接,那我們不需要對(duì)超鏈接做更改。

(二)創(chuàng)建Wildcard Script Map

如果我們不想修改ASP.NET MVC應(yīng)用程序中的URL地址,并且可以訪問(wèn)到Web服務(wù)器,那我們可以通過(guò)創(chuàng)建wildcard script map方式來(lái)把所有請(qǐng)求映射到ASP.NET框架中去。這樣就避免修改默認(rèn)的由表了。

要搞明的一點(diǎn)是,這種修改會(huì)使IIS對(duì)每個(gè)請(qǐng)求都會(huì)處理,那怕是請(qǐng)求一張圖片、ASP頁(yè)面、HTML頁(yè)面。因此使用wildcar script map會(huì)使操作更隱式。

啟用IIS7.0的wildcard script map

1. 在Connections窗口中選擇我們的應(yīng)用程序

2. 確定選中了Features視圖。

3. 雙擊Handler Mappings按鈕。

4. 單擊Add Wildcard Script Map,如圖。

5. 輸入aspnet_isapi.dll文件的路徑

6. 在Name文本框中輸入MVC

7. 點(diǎn)擊OK按鈕。

IIS中使用ASP.NET MVC的示例分析

在IIS6.0中創(chuàng)建wildcar script map的步驟:

1、 右擊站點(diǎn),選擇屬性

2、 選擇“Home Directory”選項(xiàng)卡

3、 點(diǎn)擊“Configuration”按鈕

4、 選擇“Mappings”選項(xiàng)卡

5、 點(diǎn)擊“Insert”按鈕,如下圖所示

6、 在Executeable文本框中輸入aspnet_isapi.dll文件所在的路徑

7、 去掉Verify that file exists復(fù)選框前的勾。

8、 點(diǎn)擊OK按鈕

IIS中使用ASP.NET MVC的示例分析

當(dāng)我們配置完wildcard script map我們可以使用默認(rèn)的路由表來(lái)處理下面的URL地址

/Home/Index

/Product/Details/3

/Product

總結(jié)

這篇文章中我們解釋了如何在舊版本(或IIS7.0傳統(tǒng)模式下)IIS中使用ASP.NET MVC。我們討論了兩種方式來(lái)解決URL Routing與舊版本IIS協(xié)同工作問(wèn)題 :修改默認(rèn)路由表或創(chuàng)建wildcard script map

***種方法需要我們修改ASP.NET MVC應(yīng)用程序,這種做法的好處是,我們不需要操作web服務(wù)器,而只是修改一下程序中的路由表即可。

第二種方法是需要我們創(chuàng)建wildcard script map,這種做法的好處是,我們不需要修改我們的代碼,但缺點(diǎn)是會(huì)影響ASP.NET MVC程序的性能。

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。

分享名稱(chēng):IIS中使用ASP.NETMVC的示例分析
文章網(wǎng)址:http://muchs.cn/article2/ihspoc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)全網(wǎng)營(yíng)銷(xiāo)推廣、標(biāo)簽優(yōu)化做網(wǎng)站、企業(yè)網(wǎng)站制作、品牌網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)