0

Windows Phone 7 用のアプリケーションを開発しています。情報を取得しようとしている Web サイトが提供するサービスを使用しようとしています。非同期リクエストを使用しています。したがって、認証なしで Web サイトから情報を取得しようとすると、次のコードを使用します。

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

そしてそれはうまくいきます。しかし、認証が必要な Web サイトからサービスを使用したいと思うとすぐに、

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 に関するすべての記事を読みましたが、問題を解決できませんでした。

どんな助けでも大歓迎です!

4

1 に答える 1

0

私はついにそれを理解しました!サーバーは基本認証を使用し、ヘッダーはデフォルトで「POST」に設定されています。そのため、ヘッダーを変更して「基本」に設定し、資格情報も追加する必要がありました。さらに、

CommunicationException: "サーバーがエラーを返しました:見つかりません"

未処理の例外がある場合は常に表示されます。したがって、詳細については、デバッグして_innerExceptionを確認する必要があります。

于 2011-11-18T15:22:54.963 に答える