我想让我的 ASP.NET MVC 3 Web 应用程序仅在特定主机名或 IP 地址上运行。如果有人尝试将站点托管在不同的主机或 IP 地址上,则该网站应该停止工作,因为它看到的主机名/IP 地址与配置的不同(基本上,在应用程序 DLL 中硬编码)。
知道在 ASP.NET MVC 中如何有效地实现这一点吗?
我想让我的 ASP.NET MVC 3 Web 应用程序仅在特定主机名或 IP 地址上运行。如果有人尝试将站点托管在不同的主机或 IP 地址上,则该网站应该停止工作,因为它看到的主机名/IP 地址与配置的不同(基本上,在应用程序 DLL 中硬编码)。
知道在 ASP.NET MVC 中如何有效地实现这一点吗?
在您的 Global.asax 文件中创建新的 BeginRequest 函数:
protected void Application_BeginRequest(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
if (application.Request.Url.Host != "mydomain.com")
{
application.CompleteRequest();
}
}
使用HTTP 模块过滤请求。
完成它的另一种方法是创建一个操作属性来验证该请求:P
public class HostValidatorAttribute : ActionMethodSelectorAttribute
{
public override bool IsValidForRequest(ControllerContext controllerContext, System.Reflection.MethodInfo methodInfo)
{
//validate here and returns true if valid
}
}