ASP Azure Web ロールでホストされている Silverlight 4 アプリがあります。Web ロールは、WCF サービスを公開します。(これらはすべて、同じ Visual Studio ソリューションにあります。)
サービスへの参照を正常に追加し、クライアント コードを生成しました。ただし、エラーが発生します。
ExpenseServiceClient service = new ExpenseServiceClient();
service.GetExpensesCompleted += new EventHandler<GetExpensesCompletedEventArgs>(service_GetExpensesCompleted);
service.GetExpensesAsync();
コールバック:
static void service_GetExpensesCompleted(object sender, GetExpensesCompletedEventArgs e)
{
if (e.Error != null)
{
MessageBox.Show(e.Error.ToString());
return;
}
// ...
}
e.エラーは次のとおりです。
{System.ServiceModel.CommunicationException: URI 'http://localhost:88/ExpenseService.svc' への要求を試行中にエラーが発生しました。これは、適切なクロスドメイン ポリシーを設定せずにクロスドメイン方式でサービスにアクセスしようとしたか、SOAP サービスに不適切なポリシーが原因である可能性があります。クロスドメイン ポリシー ファイルを公開し、SOAP 関連の HTTP ヘッダーを送信できるようにするために、サービスの所有者に連絡する必要がある場合があります。このエラーは、InternalsVisibleToAttribute 属性を使用せずに Web サービス プロキシで内部型を使用した場合にも発生する可能性があります。
詳細については、内部例外を参照してください。
---> System.Security.SecurityException --->
System.Security.SecurityException: Security error.
at System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)
at System.Net.Browser.BrowserHttpWebRequest.<>c__DisplayClass5.<EndGetResponse>b__4(Object sendState)
at System.Net.Browser.AsyncHelper.<>c__DisplayClass2.<BeginOnUI>b__0(Object sendState)
--- End of inner exception stack trace ---
at System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod, Object state)
at System.Net.Browser.BrowserHttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelAsyncRequest.CompleteGetResponse(IAsyncResult result)
--- End of inner exception stack trace ---
at System.ServiceModel.AsyncResult.End[TAsyncResult](IAsyncResult result)
at System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.End(SendAsyncResult result)
at System.ServiceModel.Channels.ServiceChannel.EndCall(String action, Object[] outs, IAsyncResult result)
at System.ServiceModel.ClientBase`1.ChannelBase`1.EndInvoke(String methodName, Object[] args, IAsyncResult result)
at ExpenseCalc_SilverLight.ExpenseService.ExpenseServiceClient.ExpenseServiceClientChannel.EndGetExpenses(IAsyncResult result)
at ExpenseCalc_SilverLight.ExpenseService.ExpenseServiceClient.ExpenseCalc_SilverLight.ExpenseService.IExpenseService.EndGetExpenses(IAsyncResult result)
at ExpenseCalc_SilverLight.ExpenseService.ExpenseServiceClient.OnEndGetExpenses(IAsyncResult result)
at System.ServiceModel.ClientBase`1.OnAsyncCallCompleted(IAsyncResult result)} System.Exception {System.ServiceModel.CommunicationException}
これらは両方とも で実行されていlocalhost
ます。私は何を間違っていますか?