0

私は wcf を学んでおり、サンプルの例に取り組んでいます。これで、wcf サービス用の dll と、サービスと別のクライアント appn をホストするための 2 つの Windows アプリケーションを構築しました。ホスティング 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();
        }
    }
}

もう 1 つのヘルプ: Visual Studio 2005 でサービス参照を追加するにはどうすればよいですか。

4

1 に答える 1

1

2つの可能性があります:

  • Form1_Loadが呼び出されていません
  • sh.Open()または前の行の1つが例外をスローしています

コードの周りにトライキャッチを配置します。catchブロックで、テキストを例外のテキストに設定します。

編集

これは権利の問題です。sh.Open()を実行すると、プログラムはポートでリッスンを開始する必要があります。ポートでリッスンするには許可が必要です。

「管理者として実行」でプログラムを起動すると、動作するはずです。

于 2012-04-26T13:39:11.060 に答える