0

WCF サービス プロジェクトを作成しました。SVCファイルには以下の内容が含まれています。

    <%@ ServiceHost Service="Deepak.BusinessServices.Implementation.ApiImplementation"
      Factory="Deepak.BusinessServices.Implementation.CustomServiceHostFactory"%>

SVC リファレンス

    http://localhost/DeepakGateway/Service.svc

サービスが稼働中で、WSDL が生成されています。ここで、このサービスを Windows サービスとしてホストしたいと考えています。どうすればいいですか?

「Windows Service」プロジェクトを作成し、次のコードを作成しました。

protected override void OnStart(string[] args)
    {
        if (m_Host != null)
        {
            m_Host.Close();
        }
        Uri httpUrl = new Uri("http://localhost/DeepakGateway/Service.svc");

        m_Host = new ServiceHost
        (typeof(?????? WHAT TO FILL HERE?), httpUrl);
        //Add a service endpoint
        m_Host.AddServiceEndpoint
        (typeof(?????? WHAT TO FILL HERE?), ), new WSHttpBinding(), "");
        //Enable metadata exchange
        ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
        smb.HttpGetEnabled = true;
        m_Host.Description.Behaviors.Add(smb);
        //Start the Service
        m_Host.Open();


    }
4

1 に答える 1

0

ServiceHostサービス コントラクトを実装するクラスの型をコンストラクターに追加し、サービス コントラクトの型をコンストラクター追加する必要があります。AddServiceEndpoint

サービス実装クラスが次のようになっていると仮定します。

namespace Deepak.BusinessServices.Implementation
{ 
    public class ApiImplementation : IApiImplementation
    {
       ....
    }
 }

それからあなたが必要です:

m_Host = new ServiceHost(typeof(ApiImplementation), httpUrl);
m_Host.AddServiceEndpoint(typeof(IApiImplementation), new WSHttpBinding(), "");
  • サービス ホストは、ホストするサービス クラスの (具体的な) タイプを知る必要があります。
  • エンドポイントは、公開するサービス コントラクト(インターフェイス)を知る必要があります。
于 2013-08-26T04:35:11.900 に答える