有没有办法在没有访问请求对象的情况下获取服务器 url(例如: http ://www.myapp.com:8080/applicationFolder)?
我需要 aplication_start 处的 url,并且在某些类中,包含所有好东西的Request对象不可用。
注意:我知道可以使用获取应用程序文件夹
VirtualPathUtility.ToAbsolute("~/");
有没有办法在没有访问请求对象的情况下获取服务器 url(例如: http ://www.myapp.com:8080/applicationFolder)?
我需要 aplication_start 处的 url,并且在某些类中,包含所有好东西的Request对象不可用。
注意:我知道可以使用获取应用程序文件夹
VirtualPathUtility.ToAbsolute("~/");
HttpContext.Current.Request 是一个静态属性,它始终返回当前为会话执行的 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 期间必须使用 Context 来访问请求,因为 Global.Request 尚未初始化。