gpt4 book ai didi

c# - 如何在 Global.aspx 的 Application_Start 中获取完整的主机名+端口号?

转载 作者:IT王子 更新时间:2023-10-29 03:50:37 25 4
gpt4 key购买 nike

我试过了

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 请求。

您可能想要处理定义 Application_BeginRequest(Object Sender, EventArgs e) 方法,其中请求上下文可用。

编辑:这是一个代码示例,灵感来自 Michael Shimmins 链接到的 Mike Volodarsky 的博客:

    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;
}
}

关于c# - 如何在 Global.aspx 的 Application_Start 中获取完整的主机名+端口号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4243270/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com