【问题标题】:Request object in Application_Start eventApplication_Start 事件中的请求对象
【发布时间】:2011-08-10 15:19:21
【问题描述】:

我们目前使用这行代码在Application_Start事件中获取当前应用的url。

string sApplicationURL = HttpContext.Current.Request.Url.Scheme + "://" 
                         + HttpContext.Current.Request.Url.Authority 
                         + HttpContext.Current.Request.ApplicationPath;

我最近才发现,在 IIS7.0 中,当 Application_Start 事件被触发时,Request 对象不再可用。

有没有其他方法可以在不使用 Request 对象的情况下获取当前应用程序的 url?

谢谢

【问题讨论】:

    标签: c# iis-7


    【解决方案1】:

    看看这个: http://mvolo.com/blogs/serverside/archive/2007/11/10/Integrated-mode-Request-is-not-available-in-this-context-in-Application_5F00_Start.aspx

    总而言之,发生错误是因为 Request 上下文不再可用于 Application_Start 事件。该博客陈述了处理此错误的两种选择:

    1) 更改您的代码以在没有请求的情况下工作,或者 2) 修改您的应用程序以在经典模式下运行(不推荐)。

    要获取 ApplicationPath,请使用 HttpRuntime.AppDomainAppVirtualPath

    【讨论】:

    • 你应该详细说明而不是发布一个可以移动的博客的裸链接
    • +1。此外,您可以通过实现 Application_BeginRequest 事件的处理程序来获取其他两条信息。这在答案中的文章中有所描述。
    【解决方案2】:

    Microsoft 有一篇关于所有重大更改的综合文章,包括这篇文章,

    http://learn.iis.net/page.aspx/381/aspnet-20-breaking-changes-on-iis-70/

    是的,它的内容不知何故来自http://mvolo.com(原因很简单)。

    【讨论】:

    • 这一切都很有用,但有没有办法在 Application_Start 事件中获取应用程序 URL?
    • 其实没有。一个 ASP.NET 网站可以有多个绑定,它可以在多个主机和多个端口号下运行stackoverflow.com/questions/4243270/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多