创建简单的WCF服务

发布时间 2023-12-01 20:20:05作者: Rio-

创建Service项目

在Visual Studio中新建项目,Class Library (.NET Framework),叫MyServie。

添加WCF Service

  1. 在创建好的项目中添加WCF Service,命名为MyService此时会有一个System,ServiceModel出现在引用中。
  2. 实现MyService类中的DoWork方法
namespace MyService
{
    public class MyService : IMyService
    {
        public void DoWork()
        {
            Console.WriteLine("Hello World!");
        }
    }
}

创建ServiceHost项目

  1. 新建一个Console Application (.NET Framework),叫MyServiceHost。
  2. 将刚刚创建的MyService添加到MyServiceHost的引用中。
  3. 在App.Config中添加下面的section
	<system.serviceModel>
		<bindings />
		<client />
		<services>
			<service name="MyService.MyService" behaviorConfiguration="mexBehaviour">
				<endpoint address="MyService" binding="basicHttpBinding" contract="MyService.IMyService" />
				<endpoint address="MyService" binding="netTcpBinding" contract="MyService.IMyService" />
				<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
				<host>
					<baseAddresses>
						<add baseAddress="http://localhost:8080/"/>
						<add baseAddress="net.tcp://localhost:8090/"/>
					</baseAddresses>
				</host>
			</service>
		</services>
		<behaviors>
			<serviceBehaviors>
				<behavior name="mexBehaviour">
					<serviceMetadata httpGetEnabled="true"/>
				</behavior>
			</serviceBehaviors>
		</behaviors>
	</system.serviceModel>
  1. 在Main方法里面添加以下代码
using (ServiceHost host = new ServiceHost(typeof(MyService.MyService)))
{
    host.Open();
    Console.WriteLine("Host started @ " + DateTime.Now.ToString());
    Console.ReadLine();
}

此时直接启动会报错,用管理员权限打开VS或者编译后的exe文件可以解决。

如果不想每次都用管理员权限打开,就用管理员权限在CMD执行下面的命令。

netsh http add urlacl url=http://+:8080/ user =domain\user

连接WCF Service Host

  1. 创建一个控制台应用程序MyServiceClient
  2. 启动MyServiceHost
  3. 在Reference里面Add Service Reference,输入http://localhost:8080/
  4. 在Main方法里面输入下面的代码
MyService.MyServiceClient client = new MyService.MyServiceClient("BasicHttpBinding_IMyService");
client.DoWork();
  1. 运行,会发现MyServiceHost控制台里出现了Hello World!