有没有办法获取服务器网址(例如:http://www.myapp.com:8080/applicationFolder)而无法访问请求对象?
我需要在aplication_start和某些类中的url,其中包含所有好东西的 Request 对象不可用。
注意:我知道可以使用
获取应用程序文件夹VirtualPathUtility.ToAbsolute("~/");
答案 0 :(得分:3)
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事件。
答案 1 :(得分:1)
可以有许多不同的地址都指向同一个ASP.NET网站,例如使用IP地址或名称。可能有多个DNS名称指向同一个ASP.NET应用程序。因此,Global的父类HttpApplication不知道访问者将使用哪个URL。即便是IIS也不知道。因此,您必须等待第一个请求,然后检查请求访问者访问您网站时使用的URL。像这样:
string baseUrl = Context.Request.Url.GetLeftPart(UriPartial.Authority);
在Global.Application_Start期间,必须使用Context来访问Request,因为Global.Request尚未初始化。