我正在开发VS2008中的wcf应用程序。我想将该WCF服务作为窗口服务托管。但我也希望将该服务公开为.asmx(Web服务)。
有可能吗?有没有办法将wcf服务公开为.asmx(Web服务),但需要在窗口服务中托管。
答案 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服务的更多信息。