0

ClientBin の .xml ファイルにアクセスしようとしていますが、成功しません。

コード:

 WebClient xmlClient = new WebClient();
 xmlClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(xmlClient_DownloadStringCompleted);
 Uri uri = new Uri("Antwerpen1.xml", UriKind.RelativeOrAbsolute);
 xmlClient.DownloadStringAsync(uri);

URI のデバッグ中に次のエラーがスローされます: System.InvalidOperationException

結果は次のエラーをスローします: この操作は相対 URI ではサポートされていません

次のパスでファイルにアクセスできます: http://localhost:2546/contentManagement.Web/ClientBin/Antwerpen1.xml

私は何を間違っていますか?


更新: メイン ページのコード ビハインドで同じコードを試したところ、うまくいきました。Webサービスではまだ結果が得られません。


update2: URI の問題ではなく、xmlClient.DownloadStringAsync の問題であることがわかりました。BaseAdress (私の clientbin 内の xml ファイルが保存されているパス) が何らかの理由で空です..

、事前に

4

1 に答える 1

0

サービスがドメインの境界を越えて機能できるようにするには、Webサービスのクライアントアクセスポリシーを設定する必要があります。

MSDNページに詳細がありますが、基本的には、clientaccesspolicy.xml次のようなWebサービスのルートディレクトリに呼び出されるファイルが必要です。

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

これにより、誰でもアクセスできるようになります。ロックダウンする*には、URIをURLに置き換えます。

于 2011-07-22T20:48:26.873 に答える