winforms アプリケーションで自己ホストされている WCF サービスがあります。次のリンクを使用しました。
WCF テスト クライアントを使用してサービスを追加しようとすると、次のエラーが表示されます: サービスの追加に失敗しました。サービス メタデータにアクセスできない場合があります。サービスが実行中で、メタデータを公開していることを確認してください。
エラーの詳細:
エラー: http://localhost:8001/HelloWorldからメタデータを取得できませんこれがアクセス権のある Windows (R) Communication Foundation サービスである場合は、指定されたアドレスでのメタデータ公開が有効になっていることを確認してください。
メタデータの公開を有効にする方法については、MSDN のドキュメント ( http://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata Exchange Error URI: http://localhost:8001/HelloWorld ) を参照してください。
メタデータに解決できない参照が含まれています: 'http://localhost:8001/HelloWorld'。
メッセージを受け入れることができるhttp://localhost:8001/HelloWorldでリッスンしているエンドポイントはありませんでした。これは、多くの場合、アドレスまたは SOAP アクションが正しくないことが原因です。詳細については、InnerException (存在する場合) を参照してください。
リモート サーバーに接続できません ターゲット マシンがアクティブに拒否したため、接続できませんでした 127.0.0.1:8001HTTP GET エラー URI: http://localhost:8001/HelloWorld
「http://localhost:8001/HelloWorld」のダウンロード中にエラーが発生しました。
リモートサーバーに接続できません
ターゲット マシンがアクティブに拒否したため、接続できませんでした 127.0.0.1:8001
ここに私のコードがあります:
public Server()
{
InitializeComponent();
using (host = new ServiceHost(typeof(HelloWorldService), new Uri("http://localhost:8001/HelloWorld")))
{
// Check to see if the service host already has a ServiceMetadataBehavior
ServiceMetadataBehavior smb = host.Description.Behaviors.Find<ServiceMetadataBehavior>();
// If not, add one
if (smb == null)
smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
smb.MetadataExporter.PolicyVersion = PolicyVersion.Policy15;
host.Description.Behaviors.Add(smb);
//You need to add a metadata exchange (mex) endpoint to your service to get metadata.
host.AddServiceEndpoint(ServiceMetadataBehavior.MexContractName, MetadataExchangeBindings.CreateMexHttpBinding(), "mex");
//http
host.AddServiceEndpoint(typeof(IHelloWorldService), new WSHttpBinding(), "");
host.Open();
}
}
[ServiceContract]
public interface IHelloWorldService
{
[OperationContract]
string SayHello(string name);
}
public class HelloWorldService : IHelloWorldService
{
public string SayHello(string name)
{
return string.Format("Hello, {0}", name);
}
}