0

これが私のコードです:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using BankServiceClient.BankServiceReference;

namespace BankServiceClient
{
    class Program
    {
        static void Main(string[] args)
        {
            Uri baseAddress = new Uri("http://localhost:8000/Simple");
            Type instanceType = typeof(BankServiceReference.BankClient);
            ServiceHost host = new ServiceHost(instanceType,baseAddress);

            using (host)
            {
                Type contractType = typeof(BankServiceReference.IBank);
                string relativeAddress = "BankService";
                host.AddServiceEndpoint(contractType, new BasicHttpBinding(), relativeAddress);

                host.Open();

                Console.WriteLine("Press <ENTER> to quit.");
                Console.ReadLine();

                host.Close();
            }

            /*
             * Consuming a WCF Service and using its method.
             */

            //IBank proxy = new BankClient();

            //double number = proxy.GetBalance(1234);

            //Console.WriteLine(number.ToString());
            //Console.ReadLine();
        }
    }
}

まず、いくつか質問があります。

  1. 「baseAddress」属性、正確には何ですか? デフォルトの F5 (コンソール アプリケーションなし) を使用してサービスを起動すると、サービスは localHost のランダム ポートで起動されました。正確な数を書き込んで、そこに行くと期待するにはどうすればよいですか? これで混乱。

  2. relativeAddress 属性と何ですか? BankService と書いてありますが、その属性には何を書けばよいのでしょうか?これにも困惑。

このコンソール アプリケーションを実行しようとしたときに表示される正確なエラー メッセージは次のとおりです。

HTTP は URL http://+:8000/Simple/を登録できませんでした。プロセスには、この名前空間へのアクセス権がありません (詳細については 、http: //go.microsoft.com/fwlink/ ?LinkId=70353 を参照してください)。

4

1 に答える 1

0

まず、クライアント プロジェクトがスタートアップ プロジェクトに設定されていますか?

そして、あなたの質問に答えるために。

1) baseAddress ( URI クラス) は、ホストされたサービスのベース アドレスです。別のプロジェクトを立ち上げていると思います。

2) エンドポイントの構成には 2 つのオプションがあります (参照)。相対と絶対。あなたがそれをした方法はあなたのベースを取り、あなたの親戚を追加します-> http://localhost:8000/Simple/BankService

最後に、ホスティングの問題を修正するには、次の SO リンクを参照してください。

WCF ServiceHost アクセス権

于 2010-04-20T13:24:00.143 に答える