将WCF服务公开为asmx(Web服务)并托管在窗口服务中

时间:2011-12-13 08:28:45

标签: wcf web-services visual-studio-2008 wcf-client

我正在开发VS2008中的wcf应用程序。我想将该WCF服务作为窗口服务托管。但我也希望将该服务公开为.asmx(Web服务)。

有可能吗?有没有办法将wcf服务公开为.asmx(Web服务),但需要在窗口服务中托管。

1 个答案:

答案 0 :(得分:4)

当托管为Windows服务时,您可以将服务的基本地址设置为您想要的任何URL,例如:

(假设您已经有一个名为“yourServiceClass”的类来实现服务合同)

public class ExampleWindowsService : ServiceBase
{
    public ServiceHost host = null;

    public static void Main()
    {
        ServiceBase.Run(new ExampleWindowsService());
    }

    protected override void OnStart(string[] args)
    {
        if (host != null)
        {
            host.Close();
        }
        Uri baseAddress = new Uri("http://localhost:80/yourservice.asmx");
        host = new ServiceHost(typeof(yourServiceClass), baseAddress);
        host.Open();
        Console.WriteLine("Service hosted ...");
    }
}

然后,您可以以编程方式或通过配置文件添加所需的端点和行为。查看here以查找有关如何将WCF服务实现为Windows服务的更多信息。