イントラネット用のSilverlight 4.0 Webアプリケーションを構築しています。このアプリケーションは、REST経由でサーバーに接続してデータを取得します。私は、要求を行うために、私はメソッドに次のコードを使用しています2010年SilverlightからRESTサービスを呼び出す
のVisual Studioを使用しています:
var wc = new WebClient();
const string uri = "http://server/api/statistics.svc/overall/";
wc.OpenReadCompleted += new OpenReadCompletedEventHandler(wc_OpenReadCompleted);
wc.OpenReadAsync(new Uri(uri, UriKind.Absolute));
マイOnReadCompletedイベントハンドラ:しようとしたときに私の問題が発生し
void wc_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
var buffer = new byte[e.Result.Length];
e.Result.Read(buffer,0,(int)e.Result.Length);
var xmlstr = buffer.Aggregate(String.Empty, (current, t) => current + (char) t);
// Do something with xmlstr...
}
アプリケーションを実行します。例外がwc_OpenReadCompletedイベントハンドラにライン1に投げて、次の詳細を持っているされています
TargetInvocationException: An exception occurred during the operation, making the result invalid. Check InnerException for exception details.
内部例外:
System.Security.SecurityException: Security error.
私のRESTサービスは、認証の任意の並べ替えを使用していません。
私は次の設定でに位置clientaccesspolicy.xmlを作成しました:
<?xml version="1.0" encoding="utf-8"?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-request-headers="*">
<domain uri="*"/>
</allow-from>
<grant-to>
<resource path="/api/statistics.svc/" include-subpaths="true"/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>
あなたのヘルプは大歓迎です!
おかげで、
ジェフリー・ケビンPRY
私は私のxmlファイルに/ APIを/指定されなかったUPDATE
。問題は解決されました。
ありがとうございます!
これは正しく、私はhttp://server/clientaccesspolicy.xmlにあるclientaccesspolicy.xmlを持っています。上の内容を参照してください –
私はclientaccesspolicy.xmlのサービスの前にapiを置いていませんでした...あなたの投稿が私にそれを再調査させたので、私はあなたにそれを与えるでしょう...ありがとう! –