2

私は関連しているかもしれないし、そうでないかもしれないいくつかの問題を抱えています。Visual Studioで[サービス参照の追加]を使用してデータサービスへの参照を追加すると、生成されるreference.csがコンパイルされないことに気付きました。名前空間がないことについて文句を言います。コンパイルするために修正することはできますが、これは参照を更新するたびに発生し、「これにより他の問題が発生するか」など、他のレベルでも心配です。

また、これを行うと、ホストサーバー(データサービスをホストするコンソールアプリケーション)が次のログを記録することに気付きました。

An exception occurred [System.Data.Services.DataServiceException] :: The URL 
representing the root of the service only supports GET requests.

これはサービス構成です:

  <service behaviorConfiguration="behaviour" name="StatsPlus.Server.HostedServices.SPDataServiceHost">
    <endpoint address="svc" binding="webHttpBinding" contract="System.Data.Services.IRequestHandler" />
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />

    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:8752/DataService/"/>
      </baseAddresses>
    </host>
  </service>

そしてその振る舞い:

    <behavior name="behaviour">
      <serviceMetadata httpGetEnabled="true"/>
      <serviceDebug includeExceptionDetailInFaults="true"/>
      <dataContractSerializer maxItemsInObjectGraph="10"/>
    </behavior>

実行しようとするとsvcutil http://localhost:8752/DataService/、次のようになります。

HTTP GET Error  
URI: http://localhost:8752/DataService
There was an error downloading 'http://localhost:8752/DataService'.  
The request failed with HTTP status 405: Method Not Allowed.  

何か案は?とても有難い

ありがとう

4

1 に答える 1

2

間違ったアドレスに接続していると思います。あなたはベースアドレスを持っています

<add baseAddress="http://localhost:8752/DataService/"/>

その上に相対エンドポイント アドレス

<endpoint address="svc" binding="webHttpBinding" 

したがって、完全な URL は次の 2 つの組み合わせになります。

http://localhost:8752/DataService/svc

そこに接続しようとしましたか??

本当に、WCF REST サービスで "mex" メタデータ交換エンドポイントを使用できるかどうかはわかりません。私は、WCF データ サービスのクライアント側プロキシが、HTTP エンドポイントからの特別な URL 呼び出しを介してメタデータを取得するという印象を受けました。そのため、設定からもそれを削除してみてください(そしてsvcutil、そのサービスでは使用できないと思います-私が間違っていなければ、svcutilはSOAPサービス呼び出し専用です)。

また、webHttpBindingセルフホスティングを使用しているため、webHttp動作を追加する必要があります。

<behavior name="behaviour">
  <serviceMetadata httpGetEnabled="true"/>
  <serviceDebug includeExceptionDetailInFaults="true"/>
  <dataContractSerializer maxItemsInObjectGraph="10"/>
  <webHttp />
</behavior>

この 2 つの手順を実行すると、WCF Data Service に到達できるはずです。試してみて、私たちに知らせてください!

于 2010-02-26T20:52:31.790 に答える