2011-04-21 66 views
6

我們當前使用這一行代碼來獲取Application_Start事件中的當前應用程序url。Application_Start事件中的請求對象

string sApplicationURL = HttpContext.Current.Request.Url.Scheme + "://" 
         + HttpContext.Current.Request.Url.Authority 
         + HttpContext.Current.Request.ApplicationPath; 

我剛剛發現在IIS7.0中,Application_Start事件被觸發時,Request對象不再可用。

有沒有另一種方式來獲取當前的應用程序url而不使用Request對象?

感謝

回答

9

看一看這樣的: http://mvolo.com/blogs/serverside/archive/2007/11/10/Integrated-mode-Request-is-not-available-in-this-context-in-Application_5F00_Start.aspx

總之,出現錯誤,因爲請求上下文不再可用的Application_Start事件。這個博客列出了兩個選擇來處理這個錯誤:

1)改變你的代碼的工作W/O請求,或 2)修改您的應用程序運行在經典模式(不推薦)。

要獲取ApplicationPath,請使用HttpRuntime.AppDomainAppVirtualPath

+3

您應該詳細說明,而不是發佈裸露鏈接到可移動的博客 – onof 2011-04-21 21:51:52

+0

+1,好主意,謝謝 – Jess 2011-04-21 22:52:40

+1

+1。另外,通過爲Application_BeginRequest事件實現一個處理程序,您可以獲得另外兩條信息。這在答案中的文章中有描述。 – Naraen 2011-04-22 00:45:17

0

微軟已對所有重大更改,包括這一個所有功能於一身的文章,

http://learn.iis.net/page.aspx/381/aspnet-20-breaking-changes-on-iis-70/

是的,它的內容以某種方式來自http://mvolo.com(原因很簡單)。

+2

所有這一切都很有用,但有沒有辦法在Application_Start事件中獲取應用程序URL? – desi 2011-04-25 15:37:50

+0

其實沒有。一個ASP.NET網站可以有多個綁定,它可以在多個主機和多個端口號下運行https://stackoverflow.com/questions/4243270/how-to-get-full-host-name-port-number-in-應用程序啓動的,全球的aspx – frenchone 2017-10-04 08:23:49