我试过了
Uri uri = HttpContext.Current.Request.Url;
String host = uri.Scheme + Uri.SchemeDelimiter + uri.Host + ":" + uri.Port;
Run Code Online (Sandbox Code Playgroud)
它在我的本地机器上运行良好,但在发布到IIS7时,有一个例外
System.Web.HttpException: Request is not available in this context
Run Code Online (Sandbox Code Playgroud)
谁知道如何实现这一目标?
我在IIS7上运行了一个ASP .Net应用程序.我正在使用网站运行的当前网址在我的应用程序中的类上设置一些静态属性.为此,我使用此获取域名(insde the class的静态构造函数):
var host = HttpContext.Current.Request.Url.Host;
Run Code Online (Sandbox Code Playgroud)
它在我的开发机器上工作正常(Windows XP/Cassini).但是,当我部署到IIS7时,我得到一个例外:"请求在此上下文中不可用".
我猜这是因为我在一个对象的静态构造函数中使用这个代码,它在任何请求进入之前在IIS中执行; 在请求发生之前,Cassini不会触发静态构造函数.现在,我最初并不喜欢从请求中提取域名的想法,但这是我发现它的唯一地方=)
那么,有没有人知道我可以获得主机域名的另一个地方?我假设ASP .Net必须在某种程度上了解它,独立于HttpRequests,我只是不知道如何访问它.