Ben*_*wer 13 asp.net-mvc entity-framework
是否可以从控制器构造函数中获取当前主机名?
Request和HttpContext对象都是null,因此Request.Url不产生任何结果.
public class HomeController : Controller
{
private readonly MyEntities _entities;
public HomeController()
{
//
var hostname = Request.Url;
if (hostname.Contains("localhost")) EFConnectionStringName="localhost";
else EFConnectionStringName="default";
_entities = new MyEntities(EFConnectionStringName);
}
...
Run Code Online (Sandbox Code Playgroud)
我在这里要解决的更大问题是根据主机名为Entity Framework选择连接字符串.想法?
hai*_*770 17
Request在构建 Controller时确实为null .试试这个:
protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
var hostname = requestContext.HttpContext.Request.Url.Host;
// do something based on 'hostname' value
// ....
base.Initialize(requestContext);
}
Run Code Online (Sandbox Code Playgroud)
此外,请注意,Request.Url不会返回主机名,而是返回一个Uri可以从中提取主机名的对象Url.Host.
请参阅MSDN.
试试这个:
public class HomeController : Controller
{
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
base.OnActionExecuting(filterContext);
Debug.Print("Host:" + Request.Url.Host); // Accessible here
if (Request.Url.Host == "localhost")
{
// Do what you want for localhost
}
}
}
Run Code Online (Sandbox Code Playgroud)
注意,这Request.Url是一个Uri对象,所以你应该检查Request.Url.Host
| 归档时间: |
|
| 查看次数: |
33120 次 |
| 最近记录: |