2012-01-14 58 views
1

有沒有什麼方法可以從Global.asax的Application_Start事件中確定託管網站的URL?如何確定Global.asax Application_Start事件中的服務器URL和端口

我試圖存儲的網址,以便我的應用程序可以生成從後臺進程通過電子郵件發送的動態鏈接。

如果我嘗試直接訪問這個方法HttpApplication.Request對象,我得到一個運行時錯誤:

System.Web.HttpException: Request is not available in this context

+1

爲什麼不能在'Session_Start'中完成? – Oded 2012-01-14 22:06:33

+0

在集成模式下在IIS 7或更高版本上運行時,當前的HTTP上下文在Application_Start時不可用。正如@Oded所說,Session_Start會起作用 - 就像Application_BeginRequest一樣,儘管Session_Start被調用的次數少得多。 – Dubs 2012-04-10 18:37:02

回答

0

我最終把我的代碼放在Global.asax的Application_BeginRequest事件中。

 string url = this.Context.Request.Url.AbsoluteUri.Replace(this.Context.Request.Url.PathAndQuery, string.Empty) + this.Context.Request.ApplicationPath; 
     if (url[url.Length-1] != '/') 
     { 
      url = url + '/'; 
     } 
0

您可以從與下面的請求得到的網址:

this.Context.Request.Url

由此您可以確定地址,包括應用程序的端口號。

+0

這在我的本地開發機器(卡西尼)上工作,但我部署到我的服務器時出現錯誤。你知道是否有一些IIS設置可能需要設置使它以同樣的方式工作? – YeahStu 2012-01-17 18:02:53

+0

你得到的錯誤是什麼? – alhalama 2012-01-17 19:19:05

+0

System.Web.HttpException:請求在此上下文中不可用 – YeahStu 2012-01-17 21:22:49