注意:通过控制台启动wcf服务,必须以管理员身份运行 vs,不然报错;
新建 wcf服务库(有两个重要的组成部分 接口和实现这个接口的类)
【也可以新建一个类库,自己定义 接口和实现这个接口的类;接口需要 [ServiceContract]标签 接口中的方法需要 [OperationContract]标签 用到的数据对象类需要 [DataContract] 和 属性需要 [DataMember]标签】
独立把wcf作为一个服务库【类库】,好处是可以被不同的宿主引用使用;{vs内置了部署在iis上的快捷方式,创建wcf应用程序,之后部署iis即可,不过是确定了部署在iis上才这样写的;单独写开具有更强的灵活性}
寄宿在控制台
1.引用wcf服务库(类库)
2.新建控制台应用程序
在main函数写如下代码
//MyService是你WCF服务库里面服务的名称
ServiceHost selfHost = new ServiceHost(typeof(Service1));
try
{
//打开 ServiceHost
selfHost.Open();
Console.WriteLine("success");
Console.ReadKey();
selfHost.Close();
}
catch (CommunicationException ce)
{
Console.WriteLine("Error : {0}", ce.Message);
selfHost.Abort();
Console.ReadKey();
}
3.在 控制台程序的 app.config中配置如下
<!--【wcf寄宿在控制台的config配置开始】放在configuration节点的下一级-->
<system.serviceModel>
<services>
<service name="WcfServiceLibrary1.Service1" behaviorConfiguration="MyBehavior">
<host>
<baseAddresses>
<add baseAddress="http://localhost:8123/WcfServiceLibrary1/Service1" />
</baseAddresses>
</host>
<endpoint address="MyService" binding="basicHttpBinding"
contract="WcfServiceLibrary1.IService1" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="MyBehavior">
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
<!--【wcf寄宿在控制台的config配置结束】-->
这样服务就创建成功,在需要引用这个服务的地方,引用--添加服务引用 如此例子 引用http://localhost:8123/WcfServiceLibrary1/Service1即可;
寄宿在winform
app配置和控制台完全一样,【配置再运行的项目的app.config上】
namespace OnWinform
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
ServiceHost selfHost = null;
private void button1_Click(object sender, EventArgs e)
{
if (selfHost != null)
{
selfHost.Close();
}
selfHost = new ServiceHost(typeof(WcfServiceLibrary.Service1));
selfHost.Open();
this.label1.Text="已经启动";
}
private void button2_Click(object sender, EventArgs e)
{
selfHost.Close();
this.label1.Text = "已经关闭";
}
}
}
寄宿在IIS
1、引用服务库(类库)
2、手动创建一个.svc的文件 (此文件被访问使用)
<%@ ServiceHost Language="C#" Debug="true" Service="WcfServiceLibrary.Service1"%>
3、在要启动的web项目中,的config,右击--》wcf配置--》新建服务--》bin(没有可以重新生成)--》service1--》is而vice
--》。。。。httP://删了 。。。。
4、在iis上部署这个web项目, ip:端口/ .svc即可访问到服务了
---------------------------------------------------------------------------------------------