zoukankan      html  css  js  c++  java
  • Web Service出现The request failed with HTTP status 401: Unauthorized错误

    错误重现:

    VS2005 Beta2中创建基于File SystemWeb SiteWeb Service,在Web Site中引用WebSevice,调用其中的默认的HelloWorld方法。

    Dim ws As New localhost.Service()

    Response.Write(ws.HelloWorld())

    就会出现The request failed with HTTP status 401: Unauthorized错误页面。

    为什么呢?

    原因就在于Web Service的位置是File System

    采用File System的网站安全性比较高,端口是随机的,只能在本机访问,并且网站运行的身份是当前用户的身份。因此当访问Web Service的时候需要身份验证。

    WebSite的情况也是这样,但是在默认情况访问Web Service的时候使用的是匿名用户。也就是说,虽然Web Site运行的身份是当前用户,但是访问Web Service是的时候是匿名用户。所以出现401错误。

    我们要做的就是让Web Site在访问Web Service的时候使用默认的身份。

    在实例化Web Service代理类之后我们要加上这么一句话

    Dim ws As New localhost.Service()

    ws.UseDefaultCredentials = True

    Response.Write(ws.HelloWorld())

    这样就可以了。

    以上问题是在VS2005Beta2版本当中出现的。自VS2005的正式版中已经没有。不需要增加ws.UseDefaultCredentials = True语句。但是单步调试的时候发现UseDefaultCredentials的属性依然是False。看来正式版中只是调整了使用File System网站的运行机制。

    一家之言,未经权威认证,欢迎讨论。

  • 相关阅读:
    1082 射击比赛 (20 分)
    1091 N-自守数 (15 分)
    1064 朋友数 (20 分)
    1031 查验身份证 (15 分)
    1028 人口普查 (20 分)
    1059 C语言竞赛 (20 分)
    1083 是否存在相等的差 (20 分)
    1077 互评成绩计算 (20 分)
    792. 高精度减法
    791. 高精度加法
  • 原文地址:https://www.cnblogs.com/zgblog/p/2564585.html
Copyright © 2011-2022 走看看