2

我正在尝试从 C# 客户端使用基于 C# 的服务。

当我中断服务方法调用并将鼠标悬停在前面的usernamepassword属性上以验证它们是否正在设置时,然后单步执行该方法,它工作正常。当我中断服务方法调用,然后立即跳过方法调用而不验证用户名/密码时,我得到object reference not set to an instance of an object.

用户名和密码来自一个app.config文件,并且配置值没有改变。

这可能是同步处理问题,用户名和密码没有及时设置吗?我试过插入一个sleep(5000)电话,但没有帮助。我已经多次更新服务参考。

MyService.ServiceClient sc = new MyService.ServiceClient();

sc.ClientCredentials.UserName.UserName ="pinkpanther"; // comes from app.config file
sc.ClientCredentials.UserName.Password = "clouseau"; // comes from app.config file

//open service client/proxy
sc.Open();

Dictionary<int, string> result = new Dictionary<int, string>();

// Sleep(5000); this doesn't seem to help

result = sc.FindVillain("Paris", "Train", "Car3", 4);

success = result.ContainsValue("The villain has been detained.");

sc.Close();
4

1 回答 1

0

您没有指定,但假设 WCF Web 服务要记住的一件事是,在您第一次调用 ws 方法之前,实际上不会尝试代理连接。它的行为相当奇怪,但根据我的经验,当您调用 .Open() 时,实际上并未建立客户端连接。在您的代码中,连接是在 .FindVillain() 调用中尝试的。您将需要进入 .FindVillain() 以查看实际为 null 的内容(或使用堆栈跟踪)。您还可以尝试调用不同的 ws 方法(如果可用)来查看是否在第一次调用时或特别是在 .FindVillain() 上引发了 null 异常。

祝你好运

于 2012-11-05T18:22:45.993 回答