2011-12-13 110 views
0

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

可以吗?有什么方法可以将.asmx(web服务)公开为wcf服务,但需要在窗口服务中进行托管。

+0

你是什么意思,暴露为asmx?文件扩展名应该没有关系。 –

+0

我认为他的意思是与你对asmx服务期望的绑定和行为相同。 –

+0

@BuhBuh:今天早上我读头脑太早了。 –

回答

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服务的更多信息。