网络服务凭据未传递给Web服务

时间:2011-09-16 15:11:20

标签: asp.net web-services iis credentials

我在同一台机器上的一个站点下有两个虚拟目录。它们作为网络服务标识在IIS6上运行。其中一个应用程序是一个Web服务,应该锁定只能使用某些凭据进行访问。第二个应用程序是一个应该可以访问Web服务的公共站点。

我已检查集成Windows身份验证,并且未在Web服务上取消选中启用匿名访问。我给了MACHINE_NAME $用户对Web服务目录的读取和执行权限(可能不是必需的)。

当我从公共站点调用Web服务时,它看起来像是这样:

var service = new WebService(ConfigurationManager.AppSettings["Url"]);
service.Credentials = CredentialCache.DefaultNetworkCredentials;
service.PreAuthenticate = true;

ServicePointManager.ServerCertificateValidationCallback = ValidateCertificate;
var result = service.CallWebService(str);

我期望将网络服务帐户凭据传递给Web服务并从CallWebService返回值。我得到的是401错误。

我检查过IIS日志,调用该方法后,有三个帖子成为了Web服务,但它们不包含凭据。

我还检查了安全事件日志,并在调用类似于此的方法时出现Failure Audit事件:

Logon Failure:
    Reason:     An error occurred during logon
    User Name:  MACHINE_NAME$
    Domain:     DOMAIN_NAME
    Logon Type: 3
    Logon Process:  8e
    Authentication Package: NTLM
    ...

0 个答案:

没有答案