在使用win8系統(tǒng)后,突然想運行iis,于是在windows組件中啟用iis,并aspnet_regiis.exe -i注冊iis后,于是開始發(fā)布了一個站點,一切正常
繼而,在該站點下添加虛擬目錄,然后預(yù)覽虛擬目錄的網(wǎng)頁,就會立刻報類似“未能加載程序集“App_Web_utohcdb4”。請確保在訪問該頁之前已經(jīng)編譯了此程序集。”的錯誤
我納悶了,我記得在以前版本的iis上建立一個虛擬目錄是何其的簡單并且不會出錯,搜索后發(fā)現(xiàn),原來右擊網(wǎng)站,有了兩個選下個“添加應(yīng)用程序”和“添加虛擬目錄”
繼續(xù)搜了下兩者異同(源自:http://blog.csdn.net/xiaoqijun/article/details/16523811)
A.虛擬目錄 虛擬目錄是指在站點下建立一個虛擬子目錄,指定一個固定的物理路徑做為站點的應(yīng)用路徑。 1. 虛擬目錄與父級站點共用一個應(yīng)用程序池 例如:站點TestWeb(c:/Inetpub/wwwroot/TestWeb)下建立了SubTestA(D:/SubTestA)的虛擬目錄 若TestWeb為設(shè)定了Framework V2.0,則SubTestA也必須是Framework V2.0的應(yīng)用程序,否則將給帶來Framework不匹配的各種錯誤。 2. 虛擬目錄必須將可執(zhí)行文件(dll等)放置在父級站點的bin目錄下。 3. 虛擬目錄中的web.config文件繼承父級站點的web.config. 就是說如果父級站點聲明過的引用,在虛擬目錄下的web.config中不應(yīng)重復(fù)聲明 4. 虛擬目錄中的應(yīng)用其根目錄為父級站點的根目錄 5. 虛擬目錄中的AppSetting.config設(shè)置應(yīng)使用相對路徑來進(jìn)行引用。B. 應(yīng)用程序 應(yīng)用程序是指在父級目錄下建立了一個單獨的應(yīng)用程序,獨享應(yīng)用程序池 1. 應(yīng)用程序可以與父級站點擁有不同的應(yīng)用程序池 即可以達(dá)到TestWeb為Framework V2.0,而SubTestA可以是Framework V4.0,二者互不影響 2. SubTestA的可執(zhí)行文件獨立的放置在根目錄下的bin中,不能放置在WebTest的bin目錄中 3. SubTestA的web.config獨立于WebTest的web.config(之前說SubTestA的web.config獨立于WebTest的web.config其實是不對的,測試發(fā)現(xiàn)就算添加應(yīng)用程序也會繼承站點下的web.config,除非配置禁止繼承) 4.SubTestA中的應(yīng)用其根目錄為父級站點的根目錄 5.虛擬目錄中的AppSetting.config設(shè)置應(yīng)使用相對路徑來進(jìn)行引用。應(yīng)用程序是建立在虛擬目錄的基礎(chǔ)之上,而應(yīng)用程序獨立于父級站點擁有獨立的程序運行機(jī)制,這讓同一站點擁有了運行不同框架集而不相互影響的能力實際運用中需要根據(jù)不同的情況來選擇虛擬目錄或應(yīng)用程序考慮到我只是需要某網(wǎng)站的一個映射網(wǎng)址,兩個發(fā)布文件沒有任何關(guān)系,也不想公用任何config或者dll文件于是還是老實的“添加應(yīng)用程序”來解決問題吧于是,我還是不甘心,去iis網(wǎng)站配置文件applicationHost.config(C:/Windows/System32/inetsrv/config)中查看到部分內(nèi)容新聞熱點
疑難解答