我需要能够在启动时获取我的MVC实例正在使用的Web端口,因为它可能会在站点之间发生变化。如何获取端口的大多数答案都涉及从请求对象中获取它,这在Application_Start中是不存在的。还有其他方法可以获取它吗?
我试图像这样获取它:
HttpContext.Current.Request.ServerVariables["SERVER_PORT"]
但是这会引发异常
“System.Web.HttpException(0x80004005):请求在此上下文中不可用”
答案 0 :(得分:2)
AFAIK在IIS 7+中以集成管道模式托管时,无法在Application_Start
中完成此操作。虽然涉及使用Application_BeginRequest
仅在第一个请求上执行一次应用程序初始化,但仍有一种解决方法。查看以下答案:https://stackoverflow.com/a/4243338/29407。这个答案来自following blog post。
另一种可能性当然是重新考虑为什么你需要知道Application_Start
的服务器端口,以及你是否不能做其他事情。