此问题特别是在Silverlight 3.0中:
这是我创建的网络凭证对象:
System.Net.NetworkCredential credential = new System.Net.NetworkCredential("mohammed.haroon", "abcdefg123");
我的网络服务是Service1
Service1 WebService = new Service1();
WebService.ClientCredentials = credential;
WebService.ExecuteSomeMethodAsync("xyz", "abc");
WebService.ExecuteSomeMethodAsyncCompleted += WebService_ExecuteSomeMethodAsyncCompleted;
我无法将凭据发送到经过身份验证的Windows中的Webservice,因为无法将网络凭据专门分配给Silverlight 3.0中的webservice ClientCredentials
是否有解决方法?
尝试这样:-
Service1 WebService = new Service1();
WebService.ClientCredentials.UserName.UserName = "mohammed.haroon";
WebService.ClientCredentials.UserName.Password = "abcdefg123";
WebService.ExecuteSomeMethodAsync("xyz", "abc");
WebService.ExecuteSomeMethodAsyncCompleted += WebService_ExecuteSomeMethodAsyncCompleted;
ClientCredentials
属性是只读的,但它返回ClientCredentials
的实例,该实例仅具有类型为UserName
的单个(不同于其完整的.NET 3.5对应部分)只读属性UserNamePasswordClientCredential
。这又具有UserName
和Password
的读/写属性。
我知道.Net RIA服务是用于此类事情的良好框架(即,从Silverlight控件向WCF Web服务进行身份验证)。您可以在silverlight.net上找到有关此问题的更多信息,而诸如Scott Guthrie和Tim Heuer之类的常见罪魁祸首在其博客上也有大量实例。