我正在尝试编写一个小的wcf示例应用程序,我们的客户可以使用该应用程序检查其网络设置。 我想要一个自我托管“ HelloWorld”方法的应用程序。为了那个原因 我正在使用以下代码:
_serviceHost = new ServiceHost(typeof(TestService), new Uri[] { new Uri("http://localhost:8733/Test") });
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
smb.MetadataExporter.PolicyVersion = PolicyVersion.Policy15;
_serviceHost.Description.Behaviors.Add(smb);
_serviceHost.AddServiceEndpoint(typeof(WCFTestService.ITestService), new BasicHttpBinding(), "");
_serviceHost.AddServiceEndpoint(typeof(IMetadataExchange), new WSHttpBinding(SecurityMode.None), "mex");
_serviceHost.Open();
启动应用程序时,我可以使用浏览器访问Uri,但是当我尝试使用客户端访问服务时,会收到超时异常。
using (TestServiceClient client = new TestServiceClient())
{
lblAnswer.Text = client.HelloWorld(txtName.Text);
client.Close();
}
我认为问题出在我如何使用客户端的某处(类是由服务参考中的设计器生成的),因为我可以访问服务的网页。
我在做什么错?感谢您的帮助。
其他信息:
客户端在同一应用程序中运行。客户应仅将应用程序复制到两台服务器,打开它,然后键入远程服务器端点。
更新: 如果启用,则记录Web服务。因此,我使用了以下示例: How to Enable/Disable WCF Tracing through code
生成的日志很长,因此我仅在此处添加摘录(我认为可能很重要的摘录:
数据提取:
<HttpRequest>
<Method>POST</Method>
<QueryString/>
<WebHeaders>
<VsDebuggerCausalityData>uIDPo02ifjHvoShOjR9brlBHbVAAAAAA/fKkCZlz30yNBa8BvF6FDOGg3TEpUTFDmlgrLzeagvkACQAA</VsDebuggerCausalityData>
</WebHeaders>
</HttpRequest>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://tempuri.org/ITestService/HelloWorld</Action>
</s:Header>
<s:Body>
<HelloWorld xmlns="http://tempuri.org/">
<name>Voß</name>
</HelloWorld>
</s:Body>
</s:Envelope>
数据提取:
<HttpRequest>
<Method>POST</Method>
<QueryString/>
<WebHeaders>
<VsDebuggerCausalityData>uIDPo02ifjHvoShOjR9brlBHbVAAAAAA/fKkCZlz30yNBa8BvF6FDOGg3TEpUTFDmlgrLzeagvkACQAA</VsDebuggerCausalityData>
<SOAPAction>"http://tempuri.org/ITestService/HelloWorld"</SOAPAction>
<Connection>Keep-Alive</Connection>
<Content-Length>164</Content-Length>
<Content-Type>text/xml; charset=utf-8</Content-Type>
<Accept-Encoding>gzip, deflate</Accept-Encoding>
<Expect>100-continue</Expect>
<Host>localhost:8733</Host>
</WebHeaders>
</HttpRequest>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<To s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://localhost:8733/Test/</To>
<Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://tempuri.org/ITestService/HelloWorld</Action>
</s:Header>
<s:Body>
<HelloWorld xmlns="http://tempuri.org/">
<name>Voß</name>
</HelloWorld>
</s:Body>
</s:Envelope>