私はwinformsアプリケーションでセルフホストされているWCFサービスを持っています。私は、以下のリンクを使用: サービスの追加に失敗しました: テストクライアントはWCFに接続できません。winformsアプリケーションでセルフホストされているサービス
- How to: Host a WCF Service in a Managed Application
- How to: Publish Metadata for a Service Using Code
私はWCFテストクライアントを使用して、私は次のエラーを取得するサービスを追加しよう
。サービスメタデータにアクセスできない可能性があります。サービスが実行中で、メタデータが公開されていることを確認してください。エラーの詳細:
Error: Cannot obtain Metadata from http://localhost:8001/HelloWorld If this is a Windows (R) Communication Foundation service to which you have access, please check that you have enabled metadata publishing at the specified address.
For help enabling metadata publishing, please refer to the MSDN documentation at http://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata Exchange Error URI: http://localhost:8001/HelloWorld
Metadata contains a reference that cannot be resolved: 'http://localhost:8001/HelloWorld'.
There was no endpoint listening at http://localhost:8001/HelloWorld that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details.
Unable to connect to the remote server No connection could be made because the target machine actively refused it 127.0.0.1:8001HTTP GET Error URI: http://localhost:8001/HelloWorld
There was an error downloading 'http://localhost:8001/HelloWorld'.
Unable to connect to the remote server
No connection could be made because the target machine actively refused it 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);
}
}
に動作します。このお試しください ためのソリューションであるブロックされたポート8001ですか? –
@ jskiles1 Windowsのファイアウォールを無効にしました。まだ動かない。 – Mausimo