有没有办法获得服务器url(例如:http://www.myapp.com:8080/applicationFolder)而无需访问请求对象?获取asp.net服务器和应用程序url没有请求对象
我需要url在aplication_start和某些类别请求对象与所有的好东西不可用。
注:我知道,让应用程序文件夹可以使用
VirtualPathUtility.ToAbsolute("~/");
有没有办法获得服务器url(例如:http://www.myapp.com:8080/applicationFolder)而无需访问请求对象?获取asp.net服务器和应用程序url没有请求对象
我需要url在aplication_start和某些类别请求对象与所有的好东西不可用。
注:我知道,让应用程序文件夹可以使用
VirtualPathUtility.ToAbsolute("~/");
HttpContext.Current.Request是一个静态属性,它总是返回当前正在执行的会话的请求对象来完成。
我认为你需要一个自定义的解决方案来知道在应用程序启动后第一次请求的时间,然后你可以发送任何你想要的电子邮件。这是类似的问题在这里http://weblogs.asp.net/reganschroder/archive/2008/07/25/iis7-integrated-mode-request-is-not-available-in-this-context-exception-in-application-start.aspx这样做在BeginRequest事件。
可以有许多不同的地址指向同一个ASP.NET网站,例如使用IP地址或名称。可能有多个DNS名称指向相同的ASP.NET应用程序。因此,Global的父类HttpApplication不知道访问者将使用哪个URL。即使IIS不知道。因此,您必须等待第一个请求,然后检查请求访问者访问您的网站时使用的URL。事情是这样的:
string baseUrl = Context.Request.Url.GetLeftPart(UriPartial.Authority);
一要利用上下文来获取访问Global.Application_Start期间的请求,因为Global.Request尚未初始化。
您可能会使用'HttpRuntime.AppDomainAppVirtualPath'获得虚拟路径。 – adatapost