我有asp.net mvc应用程序。我正在使用以下代码来获取控制器内的基础URI。如何在应用程序启动时获取网站的基本URI?
var baseApplicationUrl = string.Format("{0}://{1}", HttpContext.Current.Request.Url.Scheme, HttpContext.Current.Request.Url.Authority);
这工作正常。
有没有办法在Application_Start()中构造baseuri?
在应用程序启动方法HttpContext.Current.Request
会抛出异常
更新1
我有一个UISettings
类持有一定的联系。这些链接的基础URI将根据应用程序的托管方式而有所不同。例如,它可以是http://www.example.com/home/index
或https://www.example.com/home/index
或http://www.example.com/subdomain/home/index
。所以home/index
有不同的基础uri取决于它如何托管。
我知道请求在应用程序启动时不可用。但我想在应用程序启动时加载UISettings,所以我可以在DI框架中注册为单例实例。
public class UISettings
{
public string Link1 {get;set;}
public string Link2 {get;set;}
public static UiSettings Load()
{
// need to get baseURI here???
var settings = new UISettings();
settings.Link1 = baseURI + "/home/index";
return settings;
}
}
,然后用DI框架中注册作为应用单就这样我就可以把它注射在任何类后者
container.RegisterInstance<UISettings>(UiSettings.Load());
请参阅http://mvolo.com/iis7-integrated-mode-request-is-not-available-in-this-context-exception-in-applicationstart/。 – RandomUs1r