我试过了
Uri uri = HttpContext.Current.Request.Url;
String host = uri.Scheme + Uri.SchemeDelimiter + uri.Host + ":" + uri.Port;
它在我的本地机器上运行得很好,但是当发布到IIS7时,有一个例外
System.Web.HttpException: Request is not available in this context
有人知道怎么做到这一点吗?
我试过了
Uri uri = HttpContext.Current.Request.Url;
String host = uri.Scheme + Uri.SchemeDelimiter + uri.Host + ":" + uri.Port;
它在我的本地机器上运行得很好,但是当发布到IIS7时,有一个例外
System.Web.HttpException: Request is not available in this context
有人知道怎么做到这一点吗?
当您的Web应用程序启动时,不会处理任何HTTP请求.
您可能需要处理并定义请求上下文可用的应用程序_BeginRequest(Object Sender,EventArgs e)方法.
Edit:以下是一个代码示例,其灵感来源于迈克尔·希明斯链接的迈克·沃洛达斯基的博客:
void Application_BeginRequest(Object source, EventArgs e)
{
HttpApplication app = (HttpApplication)source;
var host = FirstRequestInitialisation.Initialise(app.Context);
}
static class FirstRequestInitialisation
{
private static string host = null;
private static Object s_lock = new Object();
// Initialise only on the first request
public static string Initialise(HttpContext context)
{
if (string.IsNullOrEmpty(host))
{
lock (s_lock)
{
if (string.IsNullOrEmpty(host))
{
var uri = context.Request.Url;
host = uri.GetLeftPart(UriPartial.Authority);
}
}
}
return host;
}
}