servicehost.open方法未执行后的代码

时间:2012-04-26 12:22:46

标签: .net wcf wcf-binding

我正在学习wcf并研究一个示例。在这,我为wcf服务和2个Windows应用程序构建了一个dll,用于托管服务和另一个客户端appn。在托管appn时,我无法在servicehost.open方法之后执行代码。我很想知道发生了什么事。请帮忙。

托管appn中的代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.ServiceModel;
using System.ServiceModel.Description;
using WCFService;
namespace WCFServiceHost
{
    public partial class Form1 : Form
    {
        ServiceHost sh = null;
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            Uri tcpa = new Uri("net.tcp://localhost:8000/TcpBinding");

            sh = new ServiceHost(typeof(ServiceClass), tcpa);
            NetTcpBinding tcpb = new NetTcpBinding();
            ServiceMetadataBehavior mBehave = new ServiceMetadataBehavior();
            sh.Description.Behaviors.Add(mBehave);
            sh.AddServiceEndpoint(typeof(IMetadataExchange),
            MetadataExchangeBindings.CreateMexTcpBinding(), "mex");
            sh.AddServiceEndpoint(typeof(IServiceClass), tcpb, tcpa);
            sh.Open();
**//This line is not executed
            label1.Text = "Service Running";
//This line is not executed**
        }
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            sh.Close();
        }
    }
}

还有一个帮助:我们如何在visual studio 2005中添加服务引用。

1 个答案:

答案 0 :(得分:1)

有两种可能性:

  • 未调用Form1_Load
  • sh.Open()或前一行之一正在抛出异常

在代码周围试一试。在catch块中,将文本设置为异常文本。

修改

这是一项供股问题。当你执行sh.Open()时,程序应该开始监听端口。收听端口需要获得许可。

如果您使用“以管理员身份运行”启动程序,它应该可以正常工作。