問題:
RIA アプリケーションから Self Hosted ADO.NET Data Services にアクセスできないという問題が存在します。
私のサービスは、リッチ インターネット アプリケーション (RIA) を使用して Web プロジェクトとは別にホストされています。
別のSilverlight (および Flash) クライアント アプリからのアクセスを有効にする必要があります。
Silverlight から ADO.NET Data Service (個別にセルフ ホスト) を呼び出そうとすると、例外が発生します (以下を参照)。これは、Silverlight がクロス ドメイン呼び出しを禁止しているためだと思います。
System.InvalidOperationException: 変更の保存中にエラーが発生しました。詳細については、内部例外を参照してください。---> System.Data.Services.Http.WebException: 'HttpWebResponse.NormalizeResponseStatus' で内部エラーが発生しました。System.Data.Services.Http.HttpWebResponse.NormalizeResponseStatus(Int32& statusCode) で System.Data.Services.Http.HttpWebResponse..ctor(HttpWebRequest 要求、Int32 statusCode、文字列 responseHeaders) で System.Data.Services.Http.HttpWebRequest で。 CreateResponse() at System.Data.Services.Http.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult) at System.Data.Services.Client.QueryAsyncResult.AsyncEndGetResponse(IAsyncResult asyncResult) --- 内部例外スタック トレースの終了 --- System. Data.Services.Client.BaseAsyncResult.EndExecute[T](オブジェクト ソース、文字列メソッド、Curo.Silverlight.MainPage. <>c__DisplayClass1.<.ctor>b__0(IAsyncResult ar) System.Data.Services.Client.BaseAsyncResult.HandleCompleted() で System.Data.Services.Client.QueryAsyncResult.AsyncEndGetResponse(IAsyncResult asyncResult) で System.Data.Services. Http.HttpWebRequest.ReadyStateChanged() System.Data.Services.Http.WebException: 'HttpWebResponse.NormalizeResponseStatus' で内部エラーが発生しました。System.Data.Services.Http.HttpWebResponse.NormalizeResponseStatus(Int32& statusCode) で System.Data.Services.Http.HttpWebResponse..ctor(HttpWebRequest リクエスト、
ノート:
私が読んだことによると、ADO.NET データ サービスに関してクロス ドメイン アクセスは禁止されているようです。その結果、純粋な REST フレームワークを使用するなど、データ アクセスに別のアプローチを取らなければならなくなる可能性があります。
「クロス ドメイン ADO.NET Data Services の問題は、思ったよりも複雑で、まだ解決されていません。Microsoft としばらく話し合いましたが、うまくいかない理由は、その問題に関係しています。ブラウザ レベルのトランスポートを使用しており、そのトランスポートではクロスサイト スクリプティングが許可されていません。」
参照: http://forums.silverlight.net/forums/p/70925/170703.aspx#170703
クロス サイト スクリプティングを制限しながら、アクセス ルールを定義する ClientAccessPolicy.xml ファイルを公開する必要がある場合があることを理解しています。
RIA アプリケーションが同じ LAN 上で実行されることにも注意してください。
質問:
RIA クライアントが同じファイアウォールの内側で実行されることを考慮して、RIA クライアントからサービスにアクセスする実行可能な手段はありますか? もしそうなら、どのように?
セルフ ホスト型 ADO.NET データ サービスから ClientAccessPolicy.xml を正確に公開するにはどうすればよいですか?
サービスへの外部アクセスを許可するには、どのように進めることをお勧めしますか? - 別の REST フレームワーク? - 分離を犠牲にして、同じ Web プロジェクト内でサービスをホストしますか? - 他にアドバイスがあれば...
ありがとう。