1

カスタム URL リライターがある WCF データ サービスがあるため、実際の URL は表示されず、パスに特別な要素を追加してカスタマイズできます。
例:
http://localhost/Data/ABCD.odata/
マップ先:
http://localhost/Data/OneData.svc/

これは、サービスが応答 XML でそれが配置されている実際のパスを公開していることを除いて、ほとんど機能します。そのため、PowerPivot for Excel などのアプリはその URL を見て、私が望む URL ではなくその URL で 2 番目のヒットを行います。

したがって、問題は、サービスが xml:base でカスタム URL を公開するように強制するにはどうすればよいかということです。

<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
<service xml:base="http://localhost/Data/OneData.svc/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns="http://www.w3.org/2007/app">
  <workspace>
    <atom:title>Default</atom:title>
    <collection href="Products">
      <atom:title>Products</atom:title>
    </collection>
  </workspace>
</service>

私はそれを公開したい:

<service xml:base="http://localhost/Data/ABCD.odata/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" 
4

2 に答える 2

0

これを実現するには、WCFデータサービスにカスタムホスティングを提供する必要があります。例はこのブログの一部です。IDataServiceHostインターフェースの実装に関する部分を見てください。 http://blogs.msdn.com/b/tom_laird-mcconnell/archive/2010/01/18/using-ado-net-wcf-data-services-for-streaming-infinite-event-result-sets.aspx

秘訣は、正しいAbsoluteRequestUriおよびAbsoluteServiceUriプロパティ値を提供することです。これらは、サービスが応答を書き込むために使用する値です(xml:baseを含む)。

于 2010-06-11T10:02:30.220 に答える