0

VS2012 を使用し、SL ビジネス アプリケーション プロジェクトから始めて、EF モデル Model1 を追加し、tt ファイルを削除し、コード生成を Default に変更して、プロジェクトをビルドしました。次に、さまざまなテーブルを含む DomainService1 を追加しました。OData が選択されていません。

アプリを起動すると、利用可能なサービスがあるように見えます:

ここに画像の説明を入力

しかし、URL をクリックすると、XML が表示されるはずですが、うまくいきません。?wsdl を追加すると、XML がブラウザーに送信されるはずですが、図解されたページしか表示されません。このページで提案されているように svcutil で試してみると、次のようになります。

Microsoft (R) Service Model Metadata Tool [Microsoft (R) Windows (R) Communication 
Foundation, Version 4.0.30319.17929] Copyright (c) Microsoft Corporation.  
All rights reserved.

Attempting to download metadata from 'http://localhost:57880/Ria1-Web-DomainService1.sv
c?wsdl' using WS-Metadata Exchange or DISCO. Generating files...     
Warning: No code was generated. If you were trying to generate a client, this could be 
because the metadata documents did not contain any valid contracts or services or 
because all contracts/services were discovered to exist in /reference assemblies. 
Verify that you passed all the metadata documents to the tool.

Warning: If you would like to generate data contracts from schemas make sure to use
the /dataContractOnly option.

これは、MEX エンドポイントが適切に設計されていないことを示唆しているように見えるので、私の WCF の本が出てきましたが、彼らが考えている<system.serviceModel>ものと実際にあったものとの間に相関関係はありません:

  <system.serviceModel>
    <serviceHostingEnvironment 
      aspNetCompatibilityEnabled="true"
      multipleSiteBindingsEnabled="true" />
  </system.serviceModel>

メタデータを公開するには、構成に何を追加する必要がありますか?

4

1 に答える 1

0

この質問を準備しているときに、OData を指定すると構成がどうなるのだろうと思いました。これは正しい質問であることが判明しました。あなたはこれを得る:

  <system.serviceModel>
    <serviceHostingEnvironment 
      aspNetCompatibilityEnabled="true"
      multipleSiteBindingsEnabled="true" />
    <domainServices>
      <endpoints>
        <add name="OData" 
          type="System.ServiceModel.DomainServices.Hosting.ODataEndpointFactory, 
                System.ServiceModel.DomainServices.Hosting.OData, 
                Version=4.0.0.0, Culture=neutral, 
                PublicKeyToken=31bf3856ad364e35" />
      </endpoints>
    </domainServices>

  </system.serviceModel>

これにより、さらにいくつかの検索用語が得られました。さまざまな情報源からの情報を組み合わせると、次のようになりました。

<add name="Soap" 
     type="Microsoft.ServiceModel.DomainServices.Hosting.SoapXmlEndpointFactory, 
     Microsoft.ServiceModel.DomainServices.Hosting, 
     Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />

これへの参照を追加するまで、これは完全に機能しませんでした:

Microsoft.ServiceModel.DomainServices.Hosting.EndPoints

するとすべてが明るくなり、大いに喜びました。

于 2013-03-14T13:50:26.377 に答える