2013-06-26 26 views
2

我繼承了一個相當複雜的網站項目,當我在默認的「使用默認Web服務器」設置的情況下在VS 2012中運行它時,它會正確提供登錄頁面,在基本URL http://localhost:45632下,我可以很好地登錄。然後,當我點擊一個帶有URL http://localhost:45632/Apps/Visitors/General.aspx的菜單項時,我得到一個很好的普通404.爲什麼網站項目不通過IIS提供頁面服務?

如果我然後在IIS 7.5中爲它創建一個網站(而不是默認網站下的應用程序)將物理目錄設置爲項目的源文件夾;給它一個主機名,xtjethro.local,然後編輯我的主機文件,將該主機名指向127.0.0.1;將網站項目設置爲使用自定義服務器,其基本URL爲,最後從其上下文菜單瀏覽網站,它在基本網址http://xtjethro.local/而不是http://localhost:45632下提供其頁面,一切正常。

然後,如果我將網站項目設置爲使用基本URL爲http://xtjethro.local的自定義服務器,然後重新啓動VS2012,以管理員身份運行它,那麼所有內容也都可以使用。

我想知道爲什麼http://localhost:45632/Apps/Visitors/General.aspx不能在VS2012下工作,但http://xtjethro.local/Apps/Visitors/General.aspx在IIS下工作。

+0

我意識到這個答案可能不是,但是這不會發生在IIS中設置的虛擬目錄嗎? –

+0

@MarkRucker不,在連接到項目的IIS中的默認站點下沒有虛擬目錄。 – ProfK

回答

1

Visual Studio開發Web服務器通常在與您的項目名稱匹配的虛擬目錄下運行該站點。這意味着你的頁面的URL應該是http://localhost:45632/YourProjectName/Apps/Visitors/General.aspx。如果您在IIS中的默認站點下創建應用程序,則可能會看到相同的問題。

您需要改變鏈接的生成方式。而不是使用/Apps/...,使用~/Apps/... - ASP.NET將自動將~/解析爲網站的基本路徑。

+0

VS應該知道該網站(不在默認網站下)。我已經指定了一個自定義服務器並將該主機作爲URL基礎。 – ProfK

相關問題