4

私は wcf サービスを作成しましたが、3 つのプロジェクトを使用しました。
1) ServiceLibrary (WCF ライブラリ)
2) Web
3) ConsoleTestClient
私のapp.configServiceLibraryファイルは次のようになります。

  <system.serviceModel>
    <services>
      <service name="MrDAStoreJobs.ServiceLibrary.AdvertisementService">
        <clear />
        <endpoint address="basic" 
                  binding="basicHttpBinding" bindingConfiguration="" 
                  contract="MrDAStoreJobs.ServiceLibrary.Interface.IAdvertisementService" />
        <endpoint name="mexHttpBinding"
          contract="IMetadataExchange"
          binding="mexHttpBinding"
          address="mex" />

        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:13758/" />
          </baseAddresses>
        </host>
      </service>
    </services>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <!-- To avoid disclosing metadata information, 
          set the value below to false before deployment -->
          <serviceMetadata httpGetEnabled="True" />
          <!-- To receive exception details in faults for debugging purposes, 
          set the value below to true.  Set to false before deployment 
          to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel> <br />

さて、このライブラリをホストするために、プロジェクトWeb.Configのファイルで次の設定を行いました。 svc ファイル名はWeb
WcfDataService1.svc

    public class WcfDataService1 : DataService<AdvertisementService>
    {
        // This method is called only once to initialize service-wide policies.
        public static void InitializeService(DataServiceConfiguration config)
        {
            config.UseVerboseErrors = true;
ServiceOperationRights.All);
            config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3;
        }
    }
  <system.serviceModel>
    <services>
      <service name="MrDAStoreJobs.ServiceLibrary.AdvertisementService">
        <clear />
        <endpoint address="basic" 
                  binding="basicHttpBinding" bindingConfiguration="" 
                  contract="MrDAStoreJobs.ServiceLibrary.Interface.IAdvertisementService" />
        <endpoint name="mexHttpBinding"
          contract="IMetadataExchange"
          binding="mexHttpBinding"
          address="mex" />

        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:13758/WcfDataService1.svc" />
          </baseAddresses>
        </host>
      </service>
    </services>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <!-- To avoid disclosing metadata information, 
          set the value below to false before deployment -->
          <serviceMetadata httpGetEnabled="True" />
          <!-- To receive exception details in faults for debugging purposes, 
          set the value below to true.  Set to false before deployment 
          to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>

ここで、WCF テスト クライアントを使用して直接 (ServiceLibrary プロジェクト) を使用してこのサービスをテストすると、次のように表示され、すべてがうまく機能します。 ここに画像の説明を入力
問題は、Webプロジェクトを実行しようとしたときです(wcfサービスのホストとして使用しています)。次に、コンソール テスト クライアントに移動し、参照の追加を使用して参照を追加します。GetメソッドとSetメソッド (テスト クライアントなど) が表示されないここに画像の説明を入力 IAdvertisementService インターフェイスとメソッドが表示されないのはなぜ
ですか? これを実際の IIS に展開する必要がありますか?

4

2 に答える 2

1

前の投稿が削除されました:


アップデート:

Microsoft Developer Network は実際にこれを非常に詳細にカバーしており、提供されているリソースの一部は次のとおりです。

この特定の努力を解決する本もいくつかあります。この問題を解決するためのリンクを提供しても、あなたの質問に真に答えることはできないと誰かが述べたので、私は試みます。

  1. Visual Studio 内でFileをクリックし、 New Projectに進みます。
  2. ダイアログでVisual C#を展開し、 WebおよびASP.NET Web フォーム アプリケーションを選択します。
  3. プロジェクトに任意の名前を付けますNorthwindWeb

この時点で、プロジェクトが作成されました。サービスは複雑であるため、細部を見落とすと壊滅的な結果になる可能性があります。だからこそゼロからのスタートです。

私の例では、それをDatabaseにリンクします。そこで、Ado.Net Entity Data Modelを追加します。モデルに名前を付けます: NorthwindModel. また、既存のDatabaseに基づいて生成します。この時点では、Visual Studio ウィザードに従ってください。これらのテーブル内でデータベース オブジェクトを選択し、[完了] をクリックします。

私のData Service.

  1. プロジェクト新しい項目を追加します。
  2. [ Web ]を選択し、[ WCF Data Service]を選択します。
  3. 名前を入れて、NorthwindCustomer- 次に追加します。

最初のコメントを見つけてTodo:コードを削除し、次のように入力します。

public class DemonDbCustomer : DataService<demonDbEntities>

InitializeService次に、イベント ハンドラーでコメントを見つけます。

config.SetEntitySetAccessRule("*", EntitySetRights.All);

この時点で、 CTRL + F5を押してサービスを実行します。ブラウザーが開き、サービスの XML スキーマが生成されます。アドレス バーのURL の末尾にCustomersNorthwindCustomers.svcと入力し、 Enterを押します。

** Internet Explorer がこれを台無しにする場合があるため、追加のトラブルシューティングが必要になる場合があります。**

次に、クライアント部分を作成します。

  1. 新しいプロジェクト追加
  2. Windows フォーム アプリケーションの選択
  3. 選択したファイルに名前を付けて、 [ OKNorthwindClient ] をクリックします。
  4. ソリューション エクスプローラーで、 [スタートアップ プロジェクトNorthwindClient Projectに設定]を選択します。
  5. プロジェクトを右クリック:サービス参照の追加Discoverをクリックします。

この時点で、の URLがそのアドレスフィールドNorthwindCustomers Serviceに表示されます。これはそのファイルから生成されます。 .svc

ここで、サービスにデータ バインディングを提供する必要があります。

  1. Data メニューでは、Show Data Sourcesが必要です。
  2. 新しいデータ ソースを追加
  3. のタイプを選択しData Source、ウィザードに従います (オブジェクトをクリックします)。
  4. バインドするオブジェクトを選択します。

この時点で、作成する必要があるのはUser Interface. Customers Nodeこれを行うには、 をから にData SourcesドラッグするだけですForm

  • DataGridView
  • BindingSource
  • BindingNavigation

それらはすべて自動的に追加されます。次に、をダブルクリックしてForm、以下を に追加しますForm1_Load Event Handler

ServiceReference1.northwindModel.northwindEntities proxy = new 
     ServiceReference1.northwindModel.northwindEntities(new
         Uri("http://localhost:53397/NorthwindCustomers.svc/"));

// As you see it pointed to our SVC file, because that includes our Address, Binding, Contract information.

this.customersBindingSource.DataSource = proxy.Customers;

Solution Explorerでそれを右クリックし、 View In BrowserNorthwindCustomers.svcをクリックします。XML スキーマが追加されるので、アドレス バーからその URL をコピーするだけです。次に、をコピーしたものに 置き換えます。Uri

アプリケーションを実行すると、次のことがわかります。

  • ホスト
  • クライアント
  • サービス
  • 消費した

これは、WCF データ サービスを使用する方法であり、さらに詳細な記事は次のとおりです。

うまくいけば、それは役に立ちます。

于 2013-03-06T17:55:55.050 に答える