【发布时间】:2010-10-18 03:57:35
【问题描述】:
我有一个从 Web 客户端调用的 ASMX Web 服务(在我的 localhost - WinXP IIS 5.1 上)。我的 web 服务必须使用另一个 ASMX web 服务(在 Win 2003 服务器 IIS 6.0 上)。
当我以“硬编码”方式在我的网络服务代码中提供凭据时:
engineWSE.Credentials = new System.Net.NetworkCredential("myUser", "myPass", "myDomain");
...远程 Web 服务的后续调用工作正常。
现在我试图在一些初始测试中冒充自己。我对此的初步阅读告诉我这可能是一个大主题,但这是我为初学者所做的:
在我的 WebClient 的虚拟目录 我的本地主机上的站点
在我的 webclient 站点的 web.config 中,我建立了:authentication mode="Windows" 和 identity impersonate="true"
-
在我的 web 服务的 web 方法中,它必须调用远程服务, 我改为:
engineWSE.Credentials = System.Net.CredentialCache.DefaultCredentials; -
当远程 web 服务被调用时 DefaultCredentials,我得到了 以下错误:
System.Web.Services System.Web.Services.Protocols.SoapException:服务器无法处理请求。--->
System.Net.WebException:请求失败,HTTP 状态 401:未授权。
在 System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse (SoapClientMessage 消息、WebResponse 响应、Stream responseStream、Boolean asyncCall)
在 System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] 参数)
我不确定我是否误解并试图过度简化“模拟”,或者远程 Web 服务是否以某种方式连接为仅接受带有 3 个参数(即用户名、密码、域)的凭据。
【问题讨论】:
标签: asmx impersonation credentials