我正在为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的所有文章,但它们无法解决我的问题。
任何帮助将不胜感激!
答案 0 :(得分:0)
我终于明白了!服务器使用基本身份验证,默认情况下标头设置为“POST”。所以我需要修改Header,将其设置为“Basic”并添加凭据。此外
如果存在任何未处理的异常,则始终显示CommunicationException:“服务器返回错误:找不到”
。因此,您需要调试并检查_innerException以获取更多信息。