適切WCF DataServiceのを参照することができません。
-
23-09-2019 - |
質問
私が関連している可能性があり問題のカップルを持つか、ないかもしれませんよ。私は私のデータサービスへの参照を追加するには、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.
任意のアイデア?感謝
おかげ
解決
私はあなたが間違ったアドレスに接続していると思います。あなたはベースアドレスを持つ
<add baseAddress="http://localhost:8752/DataService/"/>
とその相対エンドポイントアドレスの上に
<endpoint address="svc" binding="webHttpBinding"
は、完全なURLを2つの組み合わせになりますのでます:
http://localhost:8752/DataService/svc
あなたが接続しようとしましたが??
あなたは本当に、「MEX」WCF RESTサービスとメタデータ交換エンドポイントを持つことができる場合は、私はわかりません。私は、WCFデータサービスのクライアント側のプロキシがHTTPエンドポイントからの特別なURLコールを介してそのメタデータを取得するという印象の下にありました。そのため、おそらく同様にあなたの設定からそれを削除しよう。(私は信じて、あなたがそのサービスにsvcutil
を使用することはできません - 私は間違っていない場合はsvcutilは、唯一のSOAPサービス呼び出しのためである)
あなたはwebHttpBinding
とセルフホスティングを使用しているので、また、あなたがwebHttp
の振る舞いを追加する必要があります:
<behavior name="behaviour">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
<dataContractSerializer maxItemsInObjectGraph="10"/>
<webHttp />
</behavior>
あなたはこれらの2つの手順を行う場合は、は、私はあなたがあなたのWCFデータサービスで取得することができるはずだと思います。それを試してみて、私たちに知らせて!