Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 自定义基本身份验证在IIS7中失败_Asp.net Mvc_Authentication_Iis 7_Httpmodule_Custom Authentication - Fatal编程技术网

Asp.net mvc 自定义基本身份验证在IIS7中失败

Asp.net mvc 自定义基本身份验证在IIS7中失败,asp.net-mvc,authentication,iis-7,httpmodule,custom-authentication,Asp.net Mvc,Authentication,Iis 7,Httpmodule,Custom Authentication,我有一个ASP.NETMVC应用程序,其中包含一些RESTful服务,我正试图使用自定义基本身份验证来保护这些服务(它们是根据我自己的数据库进行身份验证的)。我通过编写一个HTTPModule实现了这一点 我有一个方法附加到HttpApplication.AuthenticateRequest事件,该事件在身份验证失败时调用此方法: private static void RejectWith401(HttpApplication app) { app.Respo

我有一个ASP.NETMVC应用程序,其中包含一些RESTful服务,我正试图使用自定义基本身份验证来保护这些服务(它们是根据我自己的数据库进行身份验证的)。我通过编写一个HTTPModule实现了这一点

我有一个方法附加到HttpApplication.AuthenticateRequest事件,该事件在身份验证失败时调用此方法:

    private static void RejectWith401(HttpApplication app)
    {
        app.Response.StatusCode = 401;
        app.Response.StatusDescription = "Access Denied";
        app.CompleteRequest();
    }
此方法附加到HttpApplication.EndRequest事件:

    public void OnEndRequest(object source, EventArgs eventArgs)
    {
        var app = (HttpApplication) source;
        if (app.Response.StatusCode == 401)
        {
            string val = String.Format("Basic Realm=\"{0}\"", "MyCustomBasicAuthentication");
            app.Response.AppendHeader("WWW-Authenticate", val);
        }
    }
这段代码添加了“WWW-Authenticate”标题,告诉浏览器弹出登录对话框。当我使用VisualStudio的web服务器进行本地调试时,这种方法非常有效。但当我在IIS7中运行它时失败了

对于IIS7,除了匿名,我已经关闭了所有内置的身份验证模块。它仍然返回HTTP 401响应,但似乎正在删除WWW Authenticate标头


有什么想法吗?

我想出来了。问题是我将这个模块命名为“BasicAuthenticationModule”,它与IIS内置的另一个模块冲突。一旦我重新命名了模块,一切都很好

即使你已经让它工作了,这也是需要考虑的: