我正在学习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中添加服务引用。
答案 0 :(得分:1)
有两种可能性:
在代码周围试一试。在catch块中,将文本设置为异常文本。
修改强>
这是一项供股问题。当你执行sh.Open()时,程序应该开始监听端口。收听端口需要获得许可。
如果您使用“以管理员身份运行”启动程序,它应该可以正常工作。