2012-08-16 106 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