如何配置Web Api 2和IIS进行基本身份验证?

时间:2015-04-24 14:59:41

标签: c# .net iis asp.net-web-api

方案

  • 我使用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>

这是我的标题(它在本地工作):

Authorization: Basic YXR1cG9uZTp0ZXN0
Content-Type: application/json; charset=utf-8

这是我的回答:

状态401 Unauthorized
数据{"message":"Authorization has been denied for this request."}
标题

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配置(如果我设置了&#34; &#34;基本身份验证,IIS会向我询问我没有的凭据和/或它们无效):

IIS Config

问题:

这可以很好地配置吗?我想念一下吗? 如何查看日志或其他内部错误的内容?

提前致谢。

1 个答案:

答案 0 :(得分:0)

您的授权代码似乎无法与数据库建立连接。

注释掉连接到数据库的代码,无论如何都返回true,看看它是否允许您通过。使用消除来缩小问题所在。您需要更新数据库连接字符串(web.config)等以匹配开发环境。如果您没有相应调整,那么您无法期望本地工作在另一个环境中工作。希望有所帮助。

相关问题