ASP.NET MVC’yi Farklı IIS Sürümleriyle Kullanma (VB)Using ASP.NET MVC with Different Versions of IIS (VB)

Microsoft tarafındanby Microsoft

Bu eğitimde, Internet Bilgi Hizmetleri'nin farklı sürümleriyle ASP.NET MVC ve URL Yönlendirme'yi nasıl kullanacağınızı öğreneceksiniz.In this tutorial, you learn how to use ASP.NET MVC, and URL Routing, with different versions of Internet Information Services. IIS 7.0 (klasik mod), IIS 6.0 ve IIS'nin önceki sürümleriyle ASP.NET MVC'yi kullanmak için farklı stratejiler öğrenirsiniz.You learn different strategies for using ASP.NET MVC with IIS 7.0 (classic mode), IIS 6.0, and earlier versions of IIS.

ASP.NET MVC çerçevesi, tarayıcı isteklerini denetleyici eylemlere yönlendirmek için yönlendirme ASP.NET yönlendirmesine bağlıdır.The ASP.NET MVC framework depends on ASP.NET Routing to route browser requests to controller actions. yönlendirmeASP.NET yararlanmak için web sunucunuzda ek yapılandırma adımları gerçekleştirmeniz gerekebilir.In order to take advantage of ASP.NET Routing, you might have to perform additional configuration steps on your web server. Her şey Internet Information Services (IIS) sürümüne ve uygulamanız için istek işleme moduna bağlıdır.It all depends on the version of Internet Information Services (IIS) and the request processing mode for your application.

IIS'nin farklı sürümlerinin bir özeti aşağıda veda edebilirsiniz:Here's a summary of the different versions of IIS:

  • IIS 7.0 (entegre mod) - ASP.NET Yönlendirme'yi kullanmak için özel bir yapılandırma gerekmez.IIS 7.0 (integrated mode) - No special configuration necessary to use ASP.NET Routing.
  • IIS 7.0 (klasik mod) - Yönlendirme ASP.NET kullanmak için özel yapılandırma yapmanız gerekir.IIS 7.0 (classic mode) - You need to perform special configuration to use ASP.NET Routing.
  • IIS 6.0 veya altında - ASP.NET Yönlendirme'yi kullanmak için özel yapılandırma yapmanız gerekir.IIS 6.0 or below - You need to perform special configuration to use ASP.NET Routing.

IIS en son sürümü sürüm 7.5 (Win7) olduğunu.The latest version of IIS is version 7.5 (on Win7). IIS 7 IIS Windows Server 2008 VE VISTA/SP1 ve üstü ile birlikte verilir.IIS 7 of IIS is included with Windows Server 2008 AND VISTA/SP1 and higher. Ayrıca IIS 7.0'ı Home Basic dışında Vista işletim sisteminin https://technet.microsoft.com/library/cc731179%28WS.10%29.aspxherhangi bir sürümüne yükleyebilirsiniz (bkz.You also can install IIS 7.0 on any version of the Vista operating system except Home Basic (see https://technet.microsoft.com/library/cc731179%28WS.10%29.aspx).

IIS 7.0, istekleri işlemek için iki modu destekler.IIS 7.0 supports two modes for processing requests. Tümleşik modu veya klasik modu kullanabilirsiniz.You can use integrated mode or classic mode. Entegre modunda IIS 7.0 kullanırken özel yapılandırma adımları gerçekleştirmeniz gerekmez.You don't need to perform any special configuration steps when using IIS 7.0 in integrated mode. Ancak, iis 7.0'ı klasik modda kullanırken ek yapılandırma gerçekleştirmeniz gerekir.However, you do need to perform additional configuration when using IIS 7.0 in classic mode.

Microsoft Windows Server 2003 IIS 6.0 içerir.Microsoft Windows Server 2003 includes IIS 6.0. Windows Server 2003 işletim sistemini kullanırken IIS 6.0'ı IIS 7.0'a yükseltemezsiniz.You cannot upgrade IIS 6.0 to IIS 7.0 when using the Windows Server 2003 operating system. IIS 6.0 kullanırken ek yapılandırma adımları gerçekleştirmeniz gerekir.You must perform additional configuration steps when using IIS 6.0.

Microsoft Windows XP Professional, IIS 5.1 içerir.Microsoft Windows XP Professional includes IIS 5.1. IIS 5.1 kullanırken ek yapılandırma adımları gerçekleştirmeniz gerekir.You must perform additional configuration steps when using IIS 5.1.

Son olarak, Microsoft Windows 2000 ve Microsoft Windows 2000 Professional IIS 5.0 içerir.Finally, Microsoft Windows 2000 and Microsoft Windows 2000 Professional includes IIS 5.0. IIS 5.0 kullanırken ek yapılandırma adımları gerçekleştirmeniz gerekir.You must perform additional configuration steps when using IIS 5.0.

Entegre karşı Klasik ModIntegrated versus Classic Mode

IIS 7.0, iki farklı istek işleme modunu kullanarak istekleri işleyebilir: tümleşik ve klasik.IIS 7.0 can process requests using two different request processing modes: integrated and classic. Tümleşik mod daha iyi performans ve daha fazla özellik sağlar.Integrated mode provides better performance and more features. Klasik mod, IIS'nin önceki sürümleriyle geriye dönük uyumluluk için dahildir.Classic mode is included for backwards compatibility with earlier versions of IIS.

İstek işleme modu uygulama havuzu tarafından belirlenir.The request processing mode is determined by the application pool. Uygulamayla ilişkili uygulama havuzunu belirleyerek belirli bir web uygulaması tarafından hangi işlem modunun kullanıldığını belirleyebilirsiniz.You can determine which processing mode is being used by a particular web application by determining the application pool associated with the application. Şu adımları uygulayın:Follow these steps:

  1. İnternet Bilgi Hizmetleri Yöneticisi'ni BaşlatınLaunch the Internet Information Services Manager
  2. Bağlantılar penceresinde, bir uygulama seçinIn the Connections window, select an application
  3. Eylemler penceresinde, Uygulamayı Edit iletişim kutusunu açmak için Temel Ayarlar bağlantısını tıklatın (Bkz. Şekil 1)In the Actions window, click the Basic Settings link to open the Edit Application dialog box (see Figure 1)
  4. Seçilen Uygulama havuzuna dikkat edin.Take note of the Application pool selected.

Varsayılan olarak, IIS iki uygulama havuzudesteklemek için yapılandırılmıştır: DefaultAppPool ve Classic .NET AppPool.By default, IIS is configured to support two application pools: DefaultAppPool and Classic .NET AppPool. DefaultAppPool seçilirse, uygulamanız tümleşik istek işleme modunda çalışır.If DefaultAppPool is selected, then your application is running in integrated request processing mode. Klasik .NET AppPool seçilirse, uygulamanız klasik istek işleme modunda çalışır.If Classic .NET AppPool is selected, your application is running in classic request processing mode.

Yeni Proje iletişim kutusuThe New Project dialog box

Şekil 1: İstek işleme modunu algılama (Tam boyutlu görüntüyü görüntülemek için tıklayınız)Figure 1: Detecting the request processing mode(Click to view full-size image)

Uygulamayı Edit iletişim kutusundaki istek işleme modunu değiştirebileceğinize dikkat edin.Notice that you can modify the request processing mode within the Edit Application dialog box. Seç düğmesini tıklatın ve uygulamayla ilişkili uygulama havuzunu değiştirin.Click the Select button and change the application pool associated with the application. bir ASP.NET uygulamasını klasikmoddan tümleşik moduna değiştirirken uyumluluk sorunları olduğunu fark edin.Realize that there are compatibility issues when changing an ASP.NET application from classic to integrated mode. Daha fazla bilgi için aşağıdaki makalelere bakın:For more information, see the following articles:

ASP.NET bir uygulama DefaultAppPool kullanıyorsa, ASP.NET Yönlendirmesi'ni (ve dolayısıyla MVC'yi ASP.NET) işe almak için ek adımlar gerçekleştirmeniz gerekmez.If an ASP.NET application is using the DefaultAppPool, then you don't need to perform any additional steps to get ASP.NET Routing (and therefore ASP.NET MVC) to work. Ancak, ASP.NET uygulaması Classic .NET AppPool'u kullanacak şekilde yapılandırılırsa okumaya devam edin, yapmanız gereken daha çok iş var.However, if the ASP.NET application is configured to use the Classic .NET AppPool then keep reading, you have more work to do.

IIS'nin Eski Sürümleriyle ASP.NET MVC kullanmaUsing ASP.NET MVC with Older Versions of IIS

IIS 7.0'dan daha eski bir IIS sürümüyle ASP.NET MVC kullanmanız gerekiyorsa veya Klasik modda IIS 7.0 kullanmanız gerekiyorsa, iki seçeneğiniz var demektir.If you need to use ASP.NET MVC with an older version of IIS than IIS 7.0, or you need to use IIS 7.0 in classic mode, then you have two options. İlk olarak, dosya uzantılarını kullanmak için rota tablosunu değiştirebilirsiniz.First, you can modify the route table to use file extensions. Örneğin, /Store/Details gibi bir URL istemek yerine, /Store.aspx/Details gibi bir URL istersiniz.For example, instead of requesting a URL like /Store/Details, you would request a URL like /Store.aspx/Details.

İkinci seçenek joker karakter komut dosyası eşlemiolarak adlandırılan bir şey oluşturmaktır.The second option is to create something called a wildcard script map. Joker karakter komut dosyası eşlemi, her isteği ASP.NET çerçeveye dönüştürmenizi sağlar.A wildcard script map enables you to map every request into the ASP.NET framework.

Web sunucunuza erişiminiz yoksa (örneğin, ASP.NET MVC uygulamanız bir Internet Servis Sağlayıcısı tarafından barındırılıyorsa) ilk seçeneği kullanmanız gerekir.If you don't have access to your web server (for example, your ASP.NET MVC application is being hosted by an Internet Service Provider) then you'll need to use the first option. URL'lerinizin görünümünü değiştirmek istemiyorsanız ve web sunucunuza erişiminiz varsa, ikinci seçeneği kullanabilirsiniz.If you don't want to modify the appearance of your URLs, and you have access to your web server, then you can use the second option.

Her seçeneği aşağıdaki bölümlerde ayrıntılı olarak inceleyeceğiz.We explore each option in detail in the following sections.

Rota Tablosuna Uzantı EklemeAdding Extensions to the Route Table

ASP.NET Yönlendirme'yi IIS'nin eski sürümleriyle çalışmaya almanın en kolay yolu, Global.asax dosyasındaki rota tablonuzu değiştirmektir.The easiest way to get ASP.NET Routing to work with older versions of IIS is to modify your route table in the Global.asax file. Listeleme 1'deki varsayılan ve değiştirilmemiş Global.asax dosyası Varsayılan rota adlı bir rotayı yapılandırır.The default and unmodified Global.asax file in Listing 1 configures one route named the Default route.

Listeleme 1 - Global.asax (değiştirilmemiş)Listing 1 - Global.asax (unmodified)

Public Class MvcApplication

        Inherits System.Web.HttpApplication 

        Shared Sub RegisterRoutes(ByVal routes As RouteCollection)

            routes.IgnoreRoute("{resource}.axd/{*pathInfo}") 

            ' MapRoute takes the following parameters, in order:

            ' (1) Route name

            ' (2) URL with parameters

            ' (3) Parameter defaults

            routes.MapRoute( _

                "Default", _

                "{controller}/{action}/{id}", _

                New With {.controller = "Home", .action = "Index", .id = ""} _

            ) 

        End Sub 

        Sub Application_Start()

            RegisterRoutes(RouteTable.Routes)

        End Sub

    End Class

Listeleme 1'de yapılandırılan Varsayılan rota, aşağıdaki gibi görünen URL'leri yönlendirmenize olanak tanır:The Default route configured in Listing 1 enables you to route URLs that look like this:

/Ana Sayfa/Dizin/Home/Index

/Ürün/Ayrıntılar/3/Product/Details/3

/Ürün/Product

Ne yazık ki, IIS'nin eski sürümleri bu istekleri ASP.NET çerçevesine aktarmaz.Unfortunately, older versions of IIS won't pass these requests to the ASP.NET framework. Bu nedenle, bu istekler bir denetleyiciye yönlendirilemez.Therefore, these requests won't get routed to a controller. Örneğin, URL /Ev/Dizin için bir tarayıcı isteği nde bulunduysanız, Şekil 2'deki hata sayfasını alırsınız.For example, if you make a browser request for the URL /Home/Index then you'll get the error page in Figure 2.

Yeni Proje iletişim kutusuThe New Project dialog box

Şekil 2: 404 Bulunamadı hatası alma (Tam boyutlu görüntüyü görüntülemek için tıklayınız)Figure 2: Receiving a 404 Not Found error(Click to view full-size image)

IIS'nin eski sürümleri yalnızca belirli istekleri ASP.NET çerçeveyle eşler.Older versions of IIS only map certain requests to the ASP.NET framework. İstek, doğru dosya uzantısına sahip bir URL için olmalıdır.The request must be for a URL with the right file extension. Örneğin, /SomePage.aspx için bir istek ASP.NET çerçevesine eşlenir.For example, a request for /SomePage.aspx gets mapped to the ASP.NET framework. Ancak, /SomePage.htm için bir istek yok.However, a request for /SomePage.htm does not.

Bu nedenle, ASP.NET Yönlendirme'nin çalışması için Varsayılan rotayı, ASP.NET çerçevesine eşlenen bir dosya uzantısı içerecek şekilde değiştirmemiz gerekir.Therefore, to get ASP.NET Routing to work, we must modify the Default route so that it includes a file extension that is mapped to the ASP.NET framework.

Bu, ". registermvc.wsfThis is done using a script named registermvc.wsf. Bu ASP.NET MVC 1 sürümü ile C:\Program Files\Microsoft ASP.NET\ASP.NET MVC\Scriptsdahil edildi , ama ASP.NET 2 bu komut dosyası http://aspnet.codeplex.com/releases/view/39978ASP.NET Futures taşındı, kullanılabilir .It was included with the ASP.NET MVC 1 release in C:\Program Files\Microsoft ASP.NET\ASP.NET MVC\Scripts, but as of ASP.NET 2 this script has been moved to the ASP.NET Futures, available at http://aspnet.codeplex.com/releases/view/39978.

Bu komut dosyasının yürütülmesi IIS ile yeni bir .mvc uzantısı kaydeder.Executing this script registers a new .mvc extension with IIS. .mvc uzantısını kaydettikten sonra, global.asax dosyasındaki rotalarınızı değiştirerek yolların .mvc uzantısını kullanmasını sağlayabilirsiniz.After you register the .mvc extension, you can modify your routes in the Global.asax file so that the routes use the .mvc extension.

Listeleme 2'deki değiştirilmiş Global.asax dosyası IIS'nin eski sürümleriyle çalışır.The modified Global.asax file in Listing 2 works with older versions of IIS.

Listeleme 2 - Global.asax (uzantılarla değiştirilmiş)Listing 2 - Global.asax (modified with extensions)

Public Class MvcApplication

        Inherits System.Web.HttpApplication 

        Shared Sub RegisterRoutes(ByVal routes As RouteCollection)

            routes.IgnoreRoute("{resource}.axd/{*pathInfo}") 

            ' MapRoute takes the following parameters, in order:

            ' (1) Route name

            ' (2) URL with parameters

            ' (3) Parameter defaults

            routes.MapRoute( _

                "Default", _

                "{controller}.mvc/{action}/{id}", _

                New With {.controller = "Home", .action = "Index", .id = ""} _

            ) 

            routes.MapRoute( _

                "Root", _

                "", _

                New With {.controller = "Home", .action = "Index", .id = ""} _

            ) 

        End Sub 

        Sub Application_Start()

            RegisterRoutes(RouteTable.Routes)

        End Sub

    End Class

Önemli: Global.asax dosyasını değiştirdikten sonra ASP.NET MVC Uygulamanızı yeniden oluşturmayı unutmayın.Important: remember to build your ASP.NET MVC Application again after changing the Global.asax file.

Listeleme 2'de Global.asax dosyasında iki önemli değişiklik vardır.There are two important changes to the Global.asax file in Listing 2. Global.asax'ta tanımlanmış iki güzergah var.There are now two routes defined in the Global.asax. Varsayılan rotanın URL deseni, ilk rota şimdi aşağıdaki gibi görünüyor:The URL pattern for the Default route, the first route, now looks like:

{controller}.mvc/{action}/{id}{controller}.mvc/{action}/{id}

.mvc uzantısının eklenmesi, ASP.NET Yönlendirme modülünün engellenebilen dosya türünü değiştirir.The addition of the .mvc extension changes the type of files that the ASP.NET Routing module intercepts. Bu değişiklikle, ASP.NET MVC uygulaması artık aşağıdaki gibi istekleri yönlendirir:With this change, the ASP.NET MVC application now routes requests like the following:

/Home.mvc/Index//Home.mvc/Index/

/Product.mvc/Ayrıntılar/3/Product.mvc/Details/3

/Ürün.mvc//Product.mvc/

İkinci rota, Kök rotası, yeni.The second route, the Root route, is new. Kök rotası için bu URL deseni boş bir dizedir.This URL pattern for the Root route is an empty string. Bu yol, uygulamanızın köküne göre yapılan istekleri eşleştirmek için gereklidir.This route is necessary for matching requests made against the root of your application. Örneğin, Kök yolu aşağıdaki gibi görünen bir istekle eşleşir:For example, the Root route will match a request that looks like this:

http://www.YourApplication.com/

Rota tablonuzda bu değişiklikleri yaptıktan sonra, uygulamanızdaki tüm bağlantıların bu yeni URL desenleri ile uyumlu olduğundan emin olmanız gerekir.After making these modifications to your route table, you'll need to make sure that all of the links in your application are compatible with these new URL patterns. Başka bir deyişle, tüm bağlantılarınızın .mvc uzantısını içerdiğinden emin olun.In other words, make sure that all of your links include the .mvc extension. Bağlantılarınızı oluşturmak için Html.ActionLink() yardımcı yöntemini kullanıyorsanız, herhangi bir değişiklik yapmanız gerekmez.If you use the Html.ActionLink() helper method to generate your links, then you should not need to make any changes.

Registermvc.wcf komut dosyasını kullanmak yerine, IIS'ye ASP.NET çerçevesine elle eşlenen yeni bir uzantı ekleyebilirsiniz.Instead of using the registermvc.wcf script, you can add a new extension to IIS that is mapped to the ASP.NET framework by hand. Kendiniz yeni bir uzantı eklerken, dosyanın var olduğunu doğrula etiketli onay kutusunun işaretlenmediğinden emin olun.When adding a new extension yourself, make sure that the checkbox labeled Verify that file exists is not checked.

Barındırılan SunucuHosted Server

Web sunucunuza her zaman erişiminiz yoktur.You don't always have access to your web server. Örneğin, bir Internet Barındırma Sağlayıcısı kullanarak ASP.NET MVC uygulamanızı barındırırsanız, IIS'ye mutlaka erişiminiz gerekmez.For example, if you are hosting your ASP.NET MVC application using an Internet Hosting Provider, then you won't necessarily have access to IIS.

Bu durumda, ASP.NET çerçevesine eşlenen varolan dosya uzantılarından birini kullanmanız gerekir.In that case, you should use one of the existing file extensions that are mapped to the ASP.NET framework. ASP.NET eşlenen dosya uzantılarına örnek olarak .aspx, .axd ve .ashx uzantıları verilebilir.Examples of file extensions mapped to ASP.NET include the .aspx, .axd, and .ashx extensions.

Örneğin, Listeleme 3'teki değiştirilmiş Global.asax dosyası .mvc uzantısı yerine .aspx uzantısını kullanır.For example, the modified Global.asax file in Listing 3 uses the .aspx extension instead of the .mvc extension.

Listeleme 3 - Global.asax (.aspx uzantıları ile değiştirildi)Listing 3 - Global.asax (modified with .aspx extensions)

Public Class MvcApplication

        Inherits System.Web.HttpApplication 

        Shared Sub RegisterRoutes(ByVal routes As RouteCollection)

            routes.IgnoreRoute("{resource}.axd/{*pathInfo}") 

            ' MapRoute takes the following parameters, in order:

            ' (1) Route name

            ' (2) URL with parameters

            ' (3) Parameter defaults

            routes.MapRoute( _

                "Default", _

                "{controller}.aspx/{action}/{id}", _

                New With {.controller = "Home", .action = "Index", .id = ""} _

            ) 

            routes.MapRoute( _

                "Root", _

                "", _

                New With {.controller = "Home", .action = "Index", .id = ""} _

            ) 

        End Sub 

        Sub Application_Start()

            RegisterRoutes(RouteTable.Routes)

        End Sub

    End Class

Listeleme 3'teki Global.asax dosyası, .mvc uzantısı yerine .aspx uzantısını kullanması dışında önceki Global.asax dosyasıyla tamamen aynıdır.The Global.asax file in Listing 3 is exactly the same as the previous Global.asax file except for the fact that it uses the .aspx extension instead of the .mvc extension. .aspx uzantısını kullanmak için uzak web sunucunuzda herhangi bir kurulum gerçekleştirmeniz gerekmez.You don't have to perform any setup on your remote web server to use the .aspx extension.

Joker Karakter Komut Dosyası Haritası OluşturmaCreating a Wildcard Script Map

URL'leri ASP.NET MVC uygulamanız için değiştirmek istemiyorsanız ve web sunucunuza erişiminiz varsa, ek bir seçeneğiniz vardır.If you don't want to modify the URLs for your ASP.NET MVC application, and you have access to your web server, then you have an additional option. Web sunucusundaki tüm istekleri ASP.NET çerçeveyle eşleyen bir joker karakter komut dosyası eşlenebebilirsiniz.You can create a wildcard script map that maps all requests to the web server to the ASP.NET framework. Bu şekilde, Varsayılan ASP.NET MVC rota tablosunu IIS 7.0 (klasik modda) veya IIS 6.0 ile kullanabilirsiniz.That way, you can use the default ASP.NET MVC route table with IIS 7.0 (in classic mode) or IIS 6.0.

Bu seçeneğin IIS'nin web sunucusuna karşı yapılan her isteği engellemesine neden olduğunu unutmayın.Be aware that this option causes IIS to intercept every request made against the web server. Buna resimler, klasik ASP sayfaları ve HTML sayfaları istekleri de dahildir.This includes requests for images, classic ASP pages, and HTML pages. Bu nedenle, ASP.NET için bir joker komut dosyası eşlemi etkinleştirme performans etkileri vardır.Therefore, enabling a wildcard script map to ASP.NET does have performance implications.

IIS 7.0 için joker karakter komut dosyası haritasını şu şekilde etkinleştirebilirsiniz:Here's how you enable a wildcard script map for IIS 7.0:

  1. Uygulamalar penceresinde uygulamanızı seçinSelect your application in the Connections window
  2. Özellikler görünümünün seçildiğinden emin olunMake sure that the Features view is selected
  3. Işleyici Eşlemeler düğmesini çift tıklatınDouble-click the Handler Mappings button
  4. Joker Karakter Komut Dosyası Haritası Ekle bağlantısını tıklayın (Bkz. Şekil 3)Click the Add Wildcard Script Map link (see Figure 3)
  5. aspnet_isapi.dll dosyasına giden yolu girin (Bu yolu PageHandlerFactory komut dosyası haritasından kopyalayabilirsiniz)Enter the path to the aspnet_isapi.dll file (You can copy this path from the PageHandlerFactory script map)
  6. MVC adını girinEnter the name MVC
  7. Tamam düğmesini tıklatınClick the OK button

Yeni Proje iletişim kutusuThe New Project dialog box

Şekil 3: IIS 7.0 ile joker karakter komut dosyası haritası oluşturma (Tam boyutlu görüntüyü görüntülemek için tıklayınız)Figure 3: Creating a wildcard script map with IIS 7.0(Click to view full-size image)

IIS 6.0 ile joker karakter komut dosyası haritası oluşturmak için aşağıdaki adımları izleyin:Follow these steps to create a wildcard script map with IIS 6.0:

  1. Bir web sitesine sağ tıklayın ve Özellikler'i seçinRight-click a website and select Properties
  2. Ana Dizini sekmesini seçinSelect the Home Directory tab
  3. Yapılandırma düğmesini tıklatınClick the Configuration button
  4. Eşlemeler sekmesini seçinSelect the Mappings tab
  5. Ekle düğmesini tıklatın (Bkz. Şekil 4)Click the Insert button (see Figure 4)
  6. Yolu aspnet_isapi.dll'ye yapıştırın (.aspx dosyaları için komut dosyası haritasından bu yolu kopyalayabilirsiniz)Paste the path to the aspnet_isapi.dll into the Executable field (you can copy this path from the script map for .aspx files)
  7. Etiketli onay kutusunun işaretli olarak işaretle nivarı dosyanın var olduğunu doğrulaUncheck the checkbox labeled Verify that file exists
  8. Tamam düğmesini tıklatınClick the OK button

Yeni Proje iletişim kutusuThe New Project dialog box

Şekil 4: IIS 6.0 ile joker karakter komut dosyası haritası oluşturma (Tam boyutlu görüntüyü görüntülemek için tıklayın)Figure 4: Creating a wildcard script map with IIS 6.0(Click to view full-size image)

Joker karakter komut dosyası eşlemlerini etkinleştirdikten sonra, Global.asax dosyasındaki rota tablosunu Root rotası içerecek şekilde değiştirmeniz gerekir.After you enable wildcard script maps, you need to modify the route table in the Global.asax file so that it includes a Root route. Aksi takdirde, uygulamanızın kök sayfası için bir istekte bulunduğunuzda Şekil 5'teki hata sayfasını alırsınız.Otherwise, you'll get the error page in Figure 5 when you make a request for the root page of your application. Değiştirilen Global.asax dosyasını Listeleme 4'te kullanabilirsiniz.You can use the modified Global.asax file in Listing 4.

Yeni Proje iletişim kutusuThe New Project dialog box

Şekil 5: Eksik Kök rota hatası(Tam boyutlu görüntüyü görüntülemek için tıklayınız)Figure 5: Missing Root route error(Click to view full-size image)

Listeleme 4 - Global.asax (Root rotası ile değiştirildi)Listing 4 - Global.asax (modified with Root route)

Public Class MvcApplication

        Inherits System.Web.HttpApplication 

        Shared Sub RegisterRoutes(ByVal routes As RouteCollection)

            routes.IgnoreRoute("{resource}.axd/{*pathInfo}") 

            ' MapRoute takes the following parameters, in order:

            ' (1) Route name

            ' (2) URL with parameters

            ' (3) Parameter defaults

            routes.MapRoute( _

                "Default", _

                "{controller}/{action}/{id}", _

                New With {.controller = "Home", .action = "Index", .id = ""} _

            ) 

            routes.MapRoute( _

                "Root", _

                "", _

                New With {.controller = "Home", .action = "Index", .id = ""} _

            ) 

        End Sub 

        Sub Application_Start()

            RegisterRoutes(RouteTable.Routes)

        End Sub

    End Class

IIS 7.0 veya IIS 6.0 için joker karakter komut dosyası eşlemesini etkinleştirdikten sonra, varsayılan rota tablosuyla çalışan ve şu gibi görünen isteklerde bulunabilirsiniz:After you enable a wildcard script map for either IIS 7.0 or IIS 6.0, you can make requests that work with the default route table that look like this:

/

/Ana Sayfa/Dizin/Home/Index

/Ürün/Ayrıntılar/3/Product/Details/3

/Ürün/Product

ÖzetSummary

Bu öğreticinin amacı, IIS'nin (veya klasik modda IIS 7.0)'in eski bir sürümünü kullanırken ASP.NET MVC'yi nasıl kullanabileceğinizi açıklamaktır.The goal of this tutorial was to explain how you can use ASP.NET MVC when using an older version of IIS (or IIS 7.0 in classic mode). ASP.NET Yönlendirme'yi IIS'nin eski sürümleriyle çalışmaya almanın iki yöntemini tartıştık: Varsayılan rota tablosunu değiştirin veya joker karakter komut dosyası eşlemi oluşturun.We discussed two methods of getting ASP.NET Routing to work with older versions of IIS: Modify the default route table or create a wildcard script map.

İlk seçenek, ASP.NET MVC uygulamanızda kullanılan URL'leri değiştirmenizi gerektirir.The first option requires you to modify the URLs used in your ASP.NET MVC application. Bu ilk seçeneğin çok önemli bir avantajı, rota tablosunu değiştirmek için bir web sunucusuna erişmenize gerek kalmamasıdır.One very significant advantage of this first option is that you do not need access to a web server in order to modify the route table. Bu, bir Internet barındırma şirketi ile ASP.NET MVC uygulama barındırma bile bu ilk seçeneği kullanabilirsiniz anlamına gelir.That means that you can use this first option even when hosting your ASP.NET MVC application with an Internet hosting company.

İkinci seçenek bir joker komut dosyası eşlemi oluşturmaktır.The second option is to create a wildcard script map. Bu ikinci seçeneğin avantajı, URL'lerinizi değiştirmeniz gerekmemesidir.The advantage of this second option is that you do not need to modify your URLs. Bu ikinci seçeneğin dezavantajı, ASP.NET MVC uygulamanızın performansını etkileyebilir.The disadvantage of this second option is that it can impact the performance of your ASP.NET MVC application.