代码改变世界

WCF中,通过C#代码或App.config配置文件创建ServiceHost类

2016-08-01 11:10 by 仙桃小白菜, ... 阅读, ... 评论, 收藏, 编辑

C#

static void Main(string[] args)
{
    //创建宿主的基地址
    Uri baseAddress = new Uri("http://localhost:8080/User");

    //创建宿主
    using (ServiceHost host = new ServiceHost(typeof(User), baseAddress))
    {
        host.AddServiceEndpoint(typeof(IUser), new WSHttpBinding(), "");

        //将HttpGetEnabled属性设置为true
        ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
        smb.HttpGetEnabled = true;

        //将行为添加到Behaviors中
        host.Description.Behaviors.Add(smb);

        //打开宿主
        host.Open();
        Console.WriteLine("WCF中的HTTP监听已启动....");
        Console.ReadLine();
        host.Close();
    }
}

 

App.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <services>
      <service name="WCFLibrary.User">
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8080/User"/>
          </baseAddresses>
        </host>
        <endpoint address="" binding="wsHttpBinding" contract="WCFLibrary.IUser"></endpoint>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="True"/>
          <serviceDebug includeExceptionDetailInFaults="False"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>
public partial class MainForm : Form
{
    ServiceHost host;

    public MainForm()
    {
        InitializeComponent();
    }

    private void MainForm_Load(object sender, EventArgs e)
    {
        host = new ServiceHost(typeof(User));
        //打开宿主
        host.Open();
        this.label1.Text = "WCF中的HTTP监听已启动....";
    }

    private void MainForm_FormClosed(object sender, FormClosedEventArgs e)
    {
        host.Close();
    }
}

 

Copyright © 2015-2017 仙桃小白菜

鄂ICP备15002168号-1

鄂公网安备 42900402000102号