Windows Phone 7 Silverlight服务引用CommunicationException:“服务器返回错误:未找到”

时间:2011-11-17 01:55:31

标签: silverlight windows-phone-7 service reference communicationexception

我正在为Windows Phone 7开发一个应用程序。我正在尝试使用我试图从中获取信息的网站提供的服务。我正在使用异步请求。因此,如果我尝试从网站获取信息而不进行任何身份验证,我会使用以下代码:

EventSrv.EventSrvSoapClient client = new EventSrv.EventSrvSoapClient();
client.GetAppointmentsAsync();
client.GetAppointmentsCompleted += new EventHandler<EventSrv.GetAppointmentsCompletedEventArgs>(events_completed);

它工作正常。但是,只要我想从需要身份验证的网站使用服务,我就会得到

  

CommunicationException:_innerException:“服务器返回错误:找不到”

public L2P.DocumentsService.GetDocumentsResponse EndGetDocuments(System.IAsyncResult result) 
{
object[] _args = new object[0];
//Between this line
L2P.DocumentsService.GetDocumentsResponse _result = ((L2P.DocumentsService.GetDocumentsResponse)(base.EndInvoke("GetDocuments", _args, result)));
//and this line
return _result;
}

我通过以下方式传递凭证:

DocumentsService.BaseServiceSoapClient docClient = new DocumentsService.BaseServiceSoapClient();
docClient.ClientCredentials.UserName.UserName = Variables.username;
docClient.ClientCredentials.UserName.Password = Variables.password;
docClient.GetDocumentsCompleted += new EventHandler<DocumentsService.GetDocumentsCompletedEventArgs>(getDocumentsCompleted);
docClient.GetDocumentsAsync();

如果我传递凭证实际上并不重要,我会得到同样的例外。我真的不知道问题是什么,也许它与身份验证无关。我已经阅读了有关CommunicationException的所有文章,但它们无法解决我的问题。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

我终于明白了!服务器使用基本身份验证,默认情况下标头设置为“POST”。所以我需要修改Header,将其设置为“Basic”并添加凭据。此外

  

CommunicationException:“服务器返回错误:找不到”

如果存在任何未处理的异常,则始终显示

。因此,您需要调试并检查_innerException以获取更多信息。