【问题标题】:Web service failing with The request failed with HTTP status 401: UnauthorizedWeb 服务失败,请求失败,HTTP 状态 401:未经授权
【发布时间】:2012-05-03 23:30:33
【问题描述】:

我有一个运行时间很长的任务,我需要从我的网站中获取并放入 Web 服务,但是每次我尝试调用 Web 服务时都会收到此错误消息 The request failed with HTTP status 401: Unauthorized.

我认为这可能只是凭据的问题,因为我在发送电子邮件时看到了类似的情况,所以我这样做了:

      Dim wsCustomer As New blueprintdev.RosterEmailService()

      Dim basicAuthenticationInfo As New System.Net.NetworkCredential("user", "pass")

      wsCustomer.UseDefaultCredentials = False

      wsCustomer.PreAuthenticate = True

      wsCustomer.Credentials = basicAuthenticationInfo

      txtTestResult.Text = wsCustomer.Test()

这仍然给我同样的问题。

还尝试使用默认凭据,但仍然没有帮助。

现在我不知道如何正确地做到这一点,所以我大部分时间都在学习教程等,谁能告诉我我在这里做错了什么?

谢谢

附加说明:我正在从事的项目是我加入公司时继承的项目,无法在 Visual Studio 中构建,因此在不大规模破解项目并删除大量代码的情况下,通过代码断点不是我的选择。

更新:运行 fiddler 向我显示 3 个条目,当我查看身份验证选项卡时,我看到:

No Proxy-Authenticate Header is present.

WWW-Authenticate Header (Negotiate) appears to be a Kerberos reply:
A1 15 30 13 A0 03 0A 01 03 A1 0C 06 0A 2B 06 01  ¡.0. ....¡...+..
04 01 82 37 02 02 0A                             ..7...         

然后

No Proxy-Authenticate Header is present.

WWW-Authenticate Header (Negotiate) appears to be a Kerberos reply:
A1 81 E2 30 81 DF A0 03 0A 01 01 A2 81 D7 04 81  ¡â0ß ....¢×.
D4 4E 54 4C 4D 53 53 50 00 02 00 00 00 0E 00 0E  ÔNTLMSSP........
00 38 00 00 00 15 82 89 E2 C1 20 C3 44 5E 99 21  .8....âÁ ÃD^!
A0 00 00 00 00 00 00 00 00 8E 00 8E 00 46 00 00   ..........F..
00 06 01 B1 1D 00 00 00 0F 41 00 43 00 41 00 44  ...±.....A.C.A.D
00 45 00 4D 00 59 00 02 00 0E 00 41 00 43 00 41  .E.M.Y.....A.C.A
00 44 00 45 00 4D 00 59 00 01 00 06 00 44 00 45  .D.E.M.Y.....D.E
00 56 00 04 00 1A 00 6C 00 6F 00 63 00 61 00 6C  .V.....l.o.c.a.l
00 2E 00 41 00 63 00 61 00 64 00 65 00 6D 00 79  ...A.c.a.d.e.m.y
00 03 00 22 00 44 00 45 00 56 00 2E 00 6C 00 6F  ...".D.E.V...l.o
00 63 00 61 00 6C 00 2E 00 41 00 63 00 61 00 64  .c.a.l...A.c.a.d
00 65 00 6D 00 79 00 05 00 1A 00 6C 00 6F 00 63  .e.m.y.....l.o.c
00 61 00 6C 00 2E 00 41 00 63 00 61 00 64 00 65  .a.l...A.c.a.d.e
00 6D 00 79 00 07 00 08 00 2E 76 48 74 53 21 CD  .m.y......vHtS!Í
01 00 00 00 00        

                       .....           

最后这个以红色突出显示

No Proxy-Authenticate Header is present.

No WWW-Authenticate Header is present.

这是否意味着身份验证数据在客户端和服务器之间的某处丢失?还是说我什么都没通过?

【问题讨论】:

  • 找到问题根源的第一步是通过浏览器自己连接到 Web 服务 - 如果您也收到 401,那么您需要与提供 Web 服务的人交谈并询问他们让你通过。如果不是,那么您知道这与您的应用程序凭据有关。像 Fiddler 这样的工具可以向您显示过去的 HTTP 流量,并且通常有助于揭示在这种情况下问题的根源。
  • 谢谢,我可以通过浏览器连接到服务,然后得到一个列出方法的基本概览屏幕。我应该在哪里看提琴手?
  • 将此添加到 web.config :
  • @Lily 仍然收到 401 错误 :(
  • 如果您在发出调用的机器上运行 Fiddler,您应该能够获取它与 Web 服务服务器之间的 HTTP 流量,假设它们位于不同的机器上。这将向您显示它实际尝试使用的凭据以及服务器返回的响应。

标签: asp.net vb.net web-services iis-7 .net-4.0


【解决方案1】:

我也遇到过类似的问题,必须明确添加用户名和密码。

即。

   wsCustomer.username = "something"
   wsCustomer.password = "something else"  

我猜你已经这样做了:

 Dim basicAuthenticationInfo As New System.Net.NetworkCredential("user", "pass")

但也许值得一试

【讨论】:

    【解决方案2】:

    如果您可以通过浏览器访问该服务,我建议您传递您的用户名,包括域作为凭据。

    用户名看起来像这样:DOMAIN\USER

    【讨论】:

      猜你喜欢
      • 2013-01-01
      • 1970-01-01
      • 2011-03-18
      • 2019-06-18
      • 2012-06-30
      • 2012-11-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多