☆─────────────────────────────────────☆
GMeazza (一个球员,一世传说) 于 (Wed Dec 24 10:41:46 2003) 提到:
发信人: GMeazza (一个球员,一世传说), 信区: DotNET
标 题: Web Service相关请教
发信站: BBS 水木清华站 (Wed Dec 24 10:34:51 2003), 转信
在另外一台机器部署了一个Web Service
在我的机器用如下的方式可以访问:
直接在IE地址栏输入其URL:
http://server/TestWebService/Service1.asmx可以调用相应的方法进行Web Service调用访问。
而我在ASP.net程序中引用该Web Service
然后运行调用同一个方法,却提示:
"请求因 HTTP 状态 401 失败:Unauthorized。 "
这是为什么?请指教。。。
☆─────────────────────────────────────☆
tellmewhy (tellmewhy) 于 (Wed Dec 24 14:23:02 2003) 提到:
可能这个链接是需要输入密码认证的,原来的流览器访问保存了认证
【 在 GMeazza (一个球员,一世传说) 的大作中提到: 】
: 发信人: GMeazza (一个球员,一世传说), 信区: DotNET
: 标 题: Web Service相关请教
: 发信站: BBS 水木清华站 (Wed Dec 24 10:34:51 2003), 转信
: 在另外一台机器部署了一个Web Service
: 在我的机器用如下的方式可以访问:
: 直接在IE地址栏输入其URL:
http://server/TestWebService/Service1.asmx: 可以调用相应的方法进行Web Service调用访问。
: 而我在ASP.net程序中引用该Web Service
: 然后运行调用同一个方法,却提示:
: "请求因 HTTP 状态 401 失败:Unauthorized。 "
: ...................
☆─────────────────────────────────────☆
nobodyelse (空无一人|水木第二错别字大王) 于 (Wed Dec 24 16:35:51 2003) 提到:
你是说cer安全证书文件吧
【 在 tellmewhy (tellmewhy) 的大作中提到: 】
: 可能这个链接是需要输入密码认证的,原来的流览器访问保存了认证
☆─────────────────────────────────────☆
GMeazza (一个球员,一世传说) 于 (Thu Dec 25 01:04:57 2003) 提到:
首先,感谢tellmewhy和nobodyelse回了我的帖子。:)
这个问题24日中午已经解决了,在此简要纪录一下解决的过程。
上午发现这个问题的时候,我真是感到很意外,而且还是在客户这边部署的时候才发现的
。
先说明一下开发环境: C#.net + SQL Server 2000 + XML + DHTML
再说明一点,我确信我的Web Service是允许匿名访问的。
在客户这边为了方便,想让我的ASP.NET站点作为默认站点,而Web Service却配成它的虚
拟目录。
结果就是在公司测试好好的应用在这里就是死活无法调用Web Service了。
直接在IE里面敲入该Web Service的地址却弹出输入用户名和密码的对话框(IP和计算机名
有一个不要),
我现在也怀疑不要的那种情况就像tellmewhy网友所说的我已经输入过u/p并给保存起来了
。
这种情况问题初分析: 是Server的配置问题,还是调用者的问题?
后者这种情况很快就被我排除了,那就是集中精力解决前者Web Service配置的问题了。
我就用google查找了一下,国外也有很多人碰到这种问题,也有各种各样的可能分析,
比如说:本身就需要认证啦,IIS有问题啦,用户权限不够啦,站点不允许匿名访问啦,
微软站点的一篇文章更狠,只说匿名访问时系统用了一个内置账号IUSER_MachineName来访
问资源,
但该帐号访问却可能出现资源的不可访问,并说这种情况原因不好定位,ft!
根据找到的各种资料作了各种尝试:比如在.WSDL文件中加入u/p,设置匿名访问的账号,
给该帐号设置
高级别的权限,更改虚拟目录的配置文件等,但没有试nobodyelse说的认证文件这种情况
(这个确定不用了)。
结果是都不行,搞得很是郁闷,这种感觉没有道理的问题最头疼了。。。
后来,我就把站点停掉(自然也就停了Web Service),在一个干净的目录新建个简单的W
eb Service,
结果却没有任何问题的,我心中狂喜,搞定!
接下来就是先知其然在只所以然的事了,把东西往这边搬,搬到这个ASP.net站点的时候出
问题了,
立马察看了一下该站点的Web.config文件,里面赫然发现了认证标签<allow deny="?">的
节点,
它表示所有匿名的访问都将被拒绝!而我却不知道这个节点什么时候被我们的开发员加上
来的
(公司的测试站点的Web.config文件不会被他人更新)。
结果就是Web Service的调用请求还没到它的门口就被拒绝了。。。。。
解决的方法:ASP.net业务站点和该Web Service配成2个独立的站点就oK了。。。
【 在 GMeazza (一个球员,一世传说) 的大作中提到: 】
: 发信人: GMeazza (一个球员,一世传说), 信区: DotNET
: 标 题: Web Service相关请教
: 发信站: BBS 水木清华站 (Wed Dec 24 10:34:51 2003), 转信
: 在另外一台机器部署了一个Web Service
: 在我的机器用如下的方式可以访问:
: 直接在IE地址栏输入其URL:
http://server/TestWebService/Service1.asmx: 可以调用相应的方法进行Web Service调用访问。
: 而我在ASP.net程序中引用该Web Service
: 然后运行调用同一个方法,却提示:
: "请求因 HTTP 状态 401 失败:Unauthorized。 "
: ...................