加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

获取ASP.Net中的当前应用程序虚拟路径

发布时间:2020-12-16 03:48:01 所属栏目:asp.Net 来源:网络整理
导读:在我的Global.asax.cs的Application_Start中,我试图使用以下方法获取当前的应用程序路径: var virtualPath = HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority) + HttpRuntime.AppDomainAppVirtualPath; 这将返回例如:http://localhost:
在我的Global.asax.cs的Application_Start中,我试图使用以下方法获取当前的应用程序路径:

var virtualPath = HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority)
                          + HttpRuntime.AppDomainAppVirtualPath;

这将返回例如:http://localhost:99/MySite/

然后我将使用此URL并执行以下操作:

var pageToHit = virtualPath + PagesMyOtherPage.aspx 
var client = new WebClient();
client.DownloadData(dummyPageUrl);

当我在IIS 6或Visual Studio内置Web服务器中运行项目时,所有这一切都很好,但是当我得到“System.Web.HttpException:请求在此上下文中不可用”时,IIS 7中的事情变得疯狂.

我知道这个帖子:Request is not available in this context

但是,我想知道是否有人知道如何在不改变项目的情况下执行上述操作以在经典模式下运行.

解决方法

在集成模式下运行时,无法访问Application_Start中当前请求的绝对URL.您可以使用HostingEnvironment.ApplicationVirtualPath访问虚拟路径名,但不能访问绝对URL.这是 an article,它解释了一个常见的解决方法.正如文章中所解释的,您有两种可能性:

>更改您的应用程序代码以不使用请求上下文(推荐)
>使用锁和单例在Application_BeginRequest中执行初始化,以确保在AppDomain的整个生命周期内仅执行一次初始化.这是similar thread讨论第二种方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读