2

HTTP動詞PUTとDELETEが適切であるか廃止されているかについての議論に巻き込まれるのを避け、これらの動詞を「強制」されたときにSilverlightを実際に機能させるという問題に焦点を当てたいと思います。

PUT動詞とDELETE動詞の操作を持つ既存のRESTWebサービスを呼び出すSilverlight4クライアントアプリケーションを作成しようとしています。このサービスは変更されません。

App.xaml.csのコンストラクターに次のステートメントを追加しました。

WebRequest.RegisterPrefix("http://", WebRequestCreator.ClientHttp);

このサービスには、以下を含む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="/" include-subpaths="true"/>
      </grant-to>
    </policy>
  </cross-domain-access>
</access-policy>

WebClientクラスを使用してGETおよびPOSTリクエストを処理しています。動詞/メソッドのPUTまたはDELETEで同じことを行おうとすると、あいまいな「セキュリティエラー」が発生し、上記のステートメントを追加することになりました。

HttpWebRequestを使用してこれを回避することについて話しているさまざまな投稿やブログ記事を見てきましたが、Silverlightクライアントからこれらの(非同期)呼び出しを行う方法を実際に示しているものは見つかりませんでした。

上記のコードに問題がある場合は、お知らせください。それ以外の場合は、これらのリクエストを実装する方法を示す例を示したり、指摘したりしていただければ幸いです。

4

3 に答える 3

3

ファイルでは、動詞とHTTP動詞clientaccesspolicy.xmlを許可する必要があります。PUTDELETE

私は通常、すべてのHTTP動詞を許可します。これは、元の構成では次のようになります。

<?xml version="1.0" encoding="utf-8"?>
<access-policy>
  <cross-domain-access>
    <policy>
      <allow-from http-request-headers="*" http-methods="*">
        <domain uri="*"/>
      </allow-from>
      <grant-to>
        <resource path="/" include-subpaths="true"/>
      </grant-to>
    </policy>
  </cross-domain-access>
</access-policy>

要素に追加されhttp-methodsた属性に注意してください。allow-from

于 2012-03-13T14:14:36.497 に答える
1

私は自分の問題を解決しましたが、なぜそれが修正されるのかまだ100%確信がありません。

同僚の提案で、アプリケーションをブラウザー外で実行できるようにし、ブラウザーの外部で実行するときに信頼性を高める必要があるように設定を確認しました。アプリは正常に動作しました。ブラウザの実行を無効にしても、アプリは正常に実行されます。

設定が言うように、ブラウザの外で実行するときは、信頼性を高める必要があります。したがって、これが問題である場合は、ブラウザで実行しているときに問題を解決できるかどうかを確認する必要があります。しかし、それは...

于 2011-09-19T20:03:48.120 に答える
0

追加 HttpWebRequest.RegisterPrefix("http://",WebRequestCreator.ClientHttp); HttpWebRequest.RegisterPrefix("https://", WebRequestCreator.ClientHttp);

https://mattduffield.wordpress.com/2011/12/11/silverlight-specific-method-is-not-supported-on-this-request/

于 2017-11-07T08:45:40.220 に答える