根据IP地址限制对Elmah的访问

时间:2013-02-20 23:24:15

标签: asp.net iis-6 elmah

我需要限制对elmah.axd的访问。 elvue.html基于某些IP地址。该网站位于IIS 6.0和.Net 3.5上。我不能使用Forms身份验证或Windows身份验证。我正在考虑使用http模块的方法。 http://www.codeproject.com/Articles/16384/Using-ASP-NET-HTTP-Modules-to-restrict-access-by-I

我不能使用限制web.config访问的方法,因为那只适用于IIS 7。 http://boseca.blogspot.com/2010/12/programmatically-addremove-ip-security.html

是否有人指出我如何解决这个问题?请指教。

2 个答案:

答案 0 :(得分:4)

我使用以下代码实现了这个:

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;
            }
        }

答案 1 :(得分:0)

我在IIS 7中使用模块:IP限制完成了此操作。

以下是有关如何在IIS 6中执行此操作的指南:http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/4117d9e2-c7e0-46db-88f6-6e804b4325b0.mspx?mfr=true

另外,您是否尝试过修改web.config,如下所示:http://weblogs.asp.net/gurusarkar/archive/2008/09/29/setting-authorization-rules-for-a-particular-page-or-folder-in-web-config.aspx