我实现了这个使用下面的代码:
protected void Application_BeginRequest(Object sender, EventArgs e)
{
var ClientSourceIP = Context.Request.Headers["CLIENT_SRC_IP"];
var HTTPClientSourceIP = Context.Request.Headers["HTTP_CLIENT_SRC_IP"];
var isValidClientSourceIP = ClientSourceIP == null ||
Regex.IsMatch(ClientSourceIP, ConfigurationManager.AppSettings["ValidClientSourceIP"]);
var isValidHTTPClientSourceIP = HTTPClientSourceIP == null ||
Regex.IsMatch(HTTPClientSourceIP, ConfigurationManager.AppSettings["ValidHTTPClientSourceIP"]);
if (
(Context.Request.Path.Contains("elmah.axd") || Context.Request.Path.Contains("elvue.aspx")) &&
((isValidClientSourceIP && isValidHTTPClientSourceIP) == false)
)
{
this.Context.Response.StatusCode = 403;
return;
}
}
这两条建议不会为我工作,因为我不能使用任何形式\ windows身份验证。另外,elmah.axd文件不是实际的物理文件,因此第一个建议不起作用。 – 2013-02-21 03:56:04
我很困惑,我无法看到任何引用Windows身份验证的IIS 6指南。您是否考虑过使用应用程序的身份验证系统来控制对这些文件的访问? – RandomUs1r 2013-02-21 16:46:16