2013-01-08 59 views
1

當您轉到ASP網站(webforms或MVC)的根目錄時,Web服務器如何知道要加載哪個.aspx或.cshtml文件以及bin/目錄中的哪個dll包含要執行的代碼?它如何匹配這兩個?ASP網站如何將一個DLL與網頁匹配?

+0

對於MVC,http://msdn.microsoft.com/en-us/library/system.web.routing.routetable.aspx可能會給你一些信息 –

+0

它是如何執行代碼來創建首先,從沒有組裝引用的文本Global.asax文件路由? – thecoop

+0

爲什麼有人低估了這個問題? – Anonymous

回答

5

我不知道你是在尋找一個非常技術性的答案,或者是一個簡單的概述。所以,這裏有一個簡單概述

默認文檔

當你去到一個ASP網站

ASP,HTML,PHP或任何技術的使用,Web服務器知道默認的文件搜索和顯示的根未提供文檔時,例如,在微軟的IIS服務器,默認的文件是:

enter image description here

這是Apache服務器一樣,有它告訴服務器「如果你沒有一個文件名,用這一個」設置的設置,這個人是在.htaccess文件中找到,並具有:

DirectoryIndex index.php index.html index.htm default.html default.htm home.html 

在ASP.NET MVC,你與路由表的工作,它是在該路線中提到的Global.asax文件,無論是通過直接指定航線或調用外部文件(類),以及常見的路線是:

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

如果這表明,如果沒有提供路線,它將與/Home/Index相同。

大會

關於DLL S部,它是所有關於你的第一個文件...

.NET網站是預編譯,並暴露了他們的命名空間和屬性,你將有一個ASP.NET Web表單,像這樣在第一行代碼:

<%@ Page Title="Home Page" Language="C#" 
    MasterPageFile="~/Site.Master" 
    AutoEventWireup="true" 
    CodeBehind="Default.aspx.cs" 
    Inherits="WebApplication3._Default" %> 

這告訴服務器來運行WebApplication3._DefaultDefault.aspx.cs,並從那裏,它將附加任何所需的組件與r取消代碼。

+0

+1此外,用戶輸入的url與服務器上的處理方式之間的橋樑是Handler Mappings。對於.aspx和.cshtml(或任何擴展名),HttpModule會爲尋找合適的.dll或文件執行並提供給瀏覽器而付出沉重的代價。 – mellamokb

+0

@mellamokb我不知道他是否想要技術概述,所以我簡單地說了正常的部分:)如果你認爲他想要,可以隨意用更多的技術細節回答它,如果正確,我會贊成:) – balexandre

+0

非常豐富!那麼它如何從Default.aspx.cs獲得包含Default.aspx.cs的編譯結果的程序集呢?作爲@mellamokb說, – thecoop