2012-08-16 105 views
0

我需要能夠獲取我的MVC實例在啓動時使用的Web端口,因爲它可能會在不同的站點之間發生變化。如何獲取端口的大多數答案都是從Application_Start中不存在的請求對象中獲取。有沒有其他的方法來獲取它?從Application_Start獲取服務器端口

我試圖像這樣把它牽回家:

HttpContext.Current.Request.ServerVariables["SERVER_PORT"] 

但是,這將引發異常

「System.Web.HttpException(0X80004005):請求是不是在這方面提供」

回答

2

AFAIK這在IIS 7+中以集成管道模式託管時不可能在Application_Start中完成。雖然涉及使用Application_BeginRequest僅對第一個請求執行一次應用程序初始化,但有一個解決方法。檢出以下答案:https://stackoverflow.com/a/4243338/29407。這個答案受到了following blog post的啓發。

另一種可能性是當然要重新考慮爲什麼你需要知道服務器端口Application_Start以及你是否無法做其他事情。

+0

哈!其實,我需要這個端口的原因是我可以強制一個請求在開始時發生,所以我可以做只能在Application_BeginRequest中發生的工作:)但是,謝謝你的信息! – directedition 2012-08-16 18:05:08