场景

我有一个使用VS2012 C#制作的Web Api 2.2 RESTful服务

  • 我正在使用带有自定义检查用户/通行证的基本身份验证(工作正常)
  • 一些方法具有[AllowAnonymous]属性
  • 几种使用[Authorize(Roles = "myRol")]的方法
  • 在本地也可以工作(读取用户并通过,与数据库进行检查,拒绝或允许(何时必须),允许匿名(何时应使用,等等))


  • 问题

    首次在DEV环境中部署服务时,无法登录:

    带有AllowAnonymous的
  • 方法返回200
  • 具有基本安全性的方法将返回401


  • 数据(请询问或评论此更新)

    这是我的web.config:
    <system.webServer>
        <modules>
      <add name="BasicAuthHttpModule" type="WebHostBasicAuth.Modules.BasicAuthHttpModule, myAssemblyName" />
    </modules>
    

    这是我的 header (在本地有效):
    Authorization: Basic YXR1cG9uZTp0ZXN0
    Content-Type: application/json; charset=utf-8
    

    这是我的回应:

    状态:401 Unauthorized 数据:{"message":"Authorization has been denied for this request."} header :
    Pragma: no-cache
    Date: Fri, 24 Apr 2015 14:36:27 GMT
    Server: Microsoft-IIS/8.0
    X-AspNet-Version: 4.0.30319
    X-Powered-By: ASP.NET
    Content-Type: application/json; charset=utf-8
    Cache-Control: no-cache
    Content-Length: 61
    Expires: -1
    

    这是我的IIS配置(如果我在基本身份验证的“上的中设置”,则IIS会询问我没有和/或无效的凭据):



    问题:

    这个配置好了吗?我想念什么吗?
    我如何查看日志或有关此内部错误的内容?

    提前致谢。

    最佳答案

    看起来您的授权码无法与数据库连接。

    注释掉连接到数据库的代码并返回 true,看看它是否让你通过。使用消除来缩小问题所在的范围。您需要更新数据库连接字符串 (web.config) 等以匹配开发环境。如果您不进行相应调整,您就不能指望在本地工作的内容在另一个环境中工作。希望有帮助。

    关于c# - 如何配置Web Api 2和IIS进行基本身份验证?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29850857/

    10-16 15:25