gpt4 book ai didi

c# - 在不使用 HttpContext.Current 的情况下确定 URL 主机名?

转载 作者:可可西里 更新时间:2023-11-01 07:46:10 29 4
gpt4 key购买 nike

使用当前请求我可以获得 URL 主机名:

HttpContext.Current.Request.Url.Host

但是 - 我需要在不使用当前请求 (HttpContext.Current) 的情况下确定 URL 主机名。这样做的原因是,当找到 SQL 依赖项时,我的代码是从 onChange 回调中的 SqlDependency 调用的。尽管代码驻留在我的网络应用程序中,但没有请求,并且 HttpContext.Current 为空。

我希望我可以从 HttpRuntime 中获取它,但那里似乎没有任何用处。我有什么办法可以获得这些信息吗?

最佳答案

如果您从 Web 应用程序运行它,并且它都是托管代码,那么 HttpContext 必须存在。您的子库(假设您的托管代码在库中)是否引用了 System.Web?如果没有,请考虑添加此引用。从那时起,您应该能够使用完全限定的命名空间直接访问 HttpContext:

System.Web.HttpContext.Current.Request.Url.Host

在任何情况下,除非您的代码是非托管的或者您的上下文确实不是源自 Web 应用程序,否则 HttpContext 应该在线程处于事件状态时随时可用。

编辑:
根据阅读下面的评论,听起来 SqlDependency 是被独立触发的。虽然它在同一个线程上,但它不会被请求直接触发。由于您要查找的只是主机 url,因此您可以创建一个应用程序变量或静态变量来保存此信息以备依赖项需要,这并不是不可想象的。

我还看到,虽然 HttpContext.Current 可能不可用,但 HttpContext.Request 可能可用。这些应该是同一个对象,但它们不一定是。有可能在那里找到主机。

关于c# - 在不使用 HttpContext.Current 的情况下确定 URL 主机名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8834677/

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