Learning WCF - Visual Studio IDE
本文关键字:Studio IDE Visual WCF Learning | 更新日期: 2023-09-27 17:55:34
我是WCF的新手,我现在正在使用"学习WCF:动手指南"一书。本书使用了VS2008作为示例,我不确定使用哪种Visual Studio IDE作为示例。我尝试使用VS Express for Web,它给出了以下错误:
"HelloIndigo.exe不包含适合入口点的静态 Main 方法"。
我可以理解问题的原因,但我不确定在哪里添加 main 方法。所以我使用了桌面版 VS Express 并且工作正常,但是当我在第一章中继续前进时,我无法继续,因为桌面版 VS Express 版本中没有 WCF 服务模板。VS2012仅免费提供试用版,有效期为90天。那么我应该使用什么IDE? 如果答案是 VS Express for Web,那么如何修复第一章中示例的错误?书中提供的例子是主机:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ServiceModel;
namespace Host
{
class Program
{
static void Main(string[] args)
{
using (ServiceHost host = new ServiceHost(typeof(HelloIndigo.HelloIndigoService),new Uri("http://localhost:8000/HelloIndigo")))
{
host.AddServiceEndpoint(typeof(HelloIndigo.IHelloIndigoService), new BasicHttpBinding(), "HelloIndigoService");
host.Open();
Console.WriteLine("Please <ENTER> to terminate the service host");
Console.ReadLine();
}
}
}
}
您好靛蓝:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ServiceModel;
namespace HelloIndigo
{
public class HelloIndigoService : IHelloIndigoService
{
public string HelloIndigo()
{
return "Hello Indigo";
}
}
[ServiceContract(Namespace="http://www.thatindigogirl.com/samples/2006/06")]
public interface IHelloIndigoService
{
[OperationContract]
string HelloIndigo();
}
}
客户:程序.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ServiceModel;
namespace Client
{
class Program
{
static void Main(string[] args)
{
EndpointAddress ep = new EndpointAddress("http://localhost:8000/HelloIndigo/HelloIndigoService");
IHelloIndigoService proxy = ChannelFactory<IHelloIndigoService>.CreateChannel(new BasicHttpBinding(), ep);
string s = proxy.HelloIndigo();
Console.WriteLine(s);
Console.WriteLine("Please <ENTER> to terminate client");
Console.ReadLine();
}
}
}
服务代理.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ServiceModel;
namespace Client
{
class ServiceProxy
{
}
[ServiceContract(Namespace = "http://www.thatindigogirl.com/samples/2006/06")]
public interface IHelloIndigoService
{
[OperationContract]
string HelloIndigo();
}
}
HelloIndigo
应该编译为库(DLL)而不是可执行文件。所以不应该有Main
的方法 - 它没有一个作为类库。
Host
的要点是,它将托管服务库HelloIndigo
,并开始侦听该特定服务的终结点上的调用。
将HelloIndigo
更改为编译为类库,并在 Host
中添加对 HelloIndigo
的引用。然后启动Host
过程。