我有一个工作的控制台应用程序,其中所有地址和配置都在配置文件中。但是当我尝试将此代码移动到WCF服务应用程序时,我会遇到各种错误。
class Program
{
static void Main(string[] args)
{
WebServiceHost host = new WebServiceHost(typeof(ImageService));
host.Open();
Console.WriteLine("Service up");
Console.ReadLine();
host.Close();
}
}
问题是WCF服务应用程序自动启动并且没有主要方法,例如控制台应用程序。如果没有main方法,如何定义WCF服务以启动WebServiceHost?
答案 0 :(得分:0)
您必须通过继承ServiceBase
类来创建自己的服务。覆盖OnStart()
方法并在实现中打开WCF服务。覆盖OnStop()
方法并在实现中关闭WCF服务。
答案 1 :(得分:0)
我找到了解决这个问题的简单方法。为了告诉WCF使用webservice,所需要的只是将其添加到.svc文件
Factory="System.ServiceModel.Activation.WebServiceHostFactory"
不知怎的,我可以在Visual Studio中打开这个文件,所以我导航到项目文件夹并使用记事本打开它。我的服务.svc文件看起来像这样:
<%@ ServiceHost Language="C#" Debug="true" Service="MyNamespace.Service1" CodeBehind="Service1.svc.cs" Factory="System.ServiceModel.Activation.WebServiceHostFactory" %>