C# 对象引用未设置为对象#1的实例

C# 对象引用未设置为对象#1的实例,c#,service,C#,Service,我正试图从一个C客户那里使用一个基于C的服务 当我在服务方法调用时中断并将鼠标悬停在前面的username和password属性上以验证它们是否已被设置,然后跨过该方法时,它工作正常。当我在服务方法调用时中断,然后在不验证用户名/密码的情况下立即跳过方法调用时,我得到的对象引用未设置为对象的实例 用户名和密码来自app.config文件,配置值不变 这是否可能是一个同步处理问题,并且用户名和密码没有及时设置?我尝试插入一个sleep(5000)呼叫,但没有任何帮助。我已多次更新服务参考 MySe

我正试图从一个C客户那里使用一个基于C的服务

当我在服务方法调用时中断并将鼠标悬停在前面的
username
password
属性上以验证它们是否已被设置,然后跨过该方法时,它工作正常。当我在服务方法调用时中断,然后在不验证用户名/密码的情况下立即跳过方法调用时,我得到的
对象引用未设置为对象的实例

用户名和密码来自
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();
MyService.ServiceClient sc=newmyservice.ServiceClient();
sc.ClientCredentials.UserName.UserName=“pinkparter”//来自app.config文件
sc.ClientCredentials.UserName.Password=“clouseau”//来自app.config文件
//开放服务客户端/代理
sc.Open();
字典结果=新字典();
//睡眠(5000);这似乎没有帮助
结果=sc.FindVillain(“巴黎”、“火车”、“Car3”和“4”);
success=result.ContainsValue(“恶棍被拘留了”);
sc.Close();

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


祝你好运

在调试器中查看属性就是执行代码来获取那些属性值——它执行属性的getter。据推测,执行该代码是在某种程度上惰性地填充值。几乎所有NullReferenceException的情况都是相同的。请参阅“”以获取一些提示。您是否可以进入生成的FindVillain方法(或查看调用堆栈)并查看什么是null?因此,您可能应该在打开服务后尝试将其中一个ClientCredentials分配给临时变量。例如,var tmp=sc.ClientCredentials.UserName.UserName