无法访问自助服务

时间:2018-09-28 11:25:18

标签: c# wcf

我正在尝试编写一个小的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

生成的日志很长,因此我仅在此处添加摘录(我认为可能很重要的摘录:

  • EventId:0 /类型:3 /子类型:传输
  • 事件ID:131085 /类型:3 /子类型:Start / ActivityName:创建ServiceHost“ WCFTestService.TestService”。
  • EventId:0 /类型:3 /子类型:传输
  • 事件ID:131085 /类型:3 /子类型:停止/活动名称:创建ServiceHost“ WCFTestService.TestService”。
  • EventId:0 /类型:3 /子类型:传输
  • 事件ID:131085 /类型:3 /子类型:开始/活动名称:打开ServiceHost“ WCFTestService.TestService”。
  • EventId:0 /类型:3 /子类型:传输
  • EventId:131085 /类型:3 /子类型:Start / ActivityName:收听“ http://localhost:8733/Test””。
  • EventId:0 /类型:3 /子类型:传输
  • 事件ID:131085 /类型:3 /子类型:Stop /活动名称:打开ServiceHost“ WCFTestService.TestService”。
  • EventId:0 /类型:3 /子类型:传输
  • 事件编号:131085 /类型:3 /子类型:开始/活动名称:创建渠道工厂。合同类型:“ WebServiceTest.ServiceReference1.ITestService”
  • EventId:0 /类型:3 /子类型:传输
  • 事件ID:131085 /类型:3 /子类型:Stop / ActivityName:创建通道工厂。合同类型:“ WebServiceTest.ServiceReference1.ITestService”
  • EventId:0 /类型:3 /子类型:传输
  • EventId:131085 / Type:3 / SubType:Start / ActivityName:打开ClientBase。合同类型:“ WebServiceTest.ServiceReference1.ITestService”
  • EventId:0 /类型:3 /子类型:传输
  • 事件ID:131085 /类型:3 /子类型:停止/活动名称:打开ClientBase。合同类型:“ WebServiceTest.ServiceReference1.ITestService”
  • EventId:0 /类型:3 /子类型:传输
  • 事件编号:131085 /类型:3 /子类型:开始/活动名称:流程操作。 “ http://tempuri.org/ITestService/HelloWorld
  • EventId:0 /类型:3 /子类型:信息
  

数据提取:

<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>
  • EventId:0 /类型:3 /子类型:传输
  • EventId:131085 /类型:3 /子类型:Start / ActivityName:在连接“ http://localhost:8733/Test/”上收到的字节
  • EventId:0 /类型:3 /子类型:传输
  • EventId:131085 /类型:3 /子类型:Suspend / ActivityName:在连接“ http://localhost:8733/Test/”上收到的字节
  • 事件ID:131085 /类型:3 /子类型:Start / ActivityName:正在处理消息1
  • EventId:0 /类型:3 /子类型:传输
  • EventId:131085 /类型:3 /子类型:Start / ActivityName:流程操作“ http://tempuri.org/ITestService/HelloWorld
  • EventId:0 /类型:3 /子类型:传输
  • EventId:131085 /类型:3 /子类型:Stop / ActivityName:处理消息1
  • EventId:131085 /类型:3 /子类型:Resume / ActivityName:在连接“ http://localhost:8733/Test/”上收到的字节
  • 事件编号:131085 /类型:3 /子类型:开始/活动名称:流程操作。 “ http://tempuri.org/ITestService/HelloWorld
  • EventId:0 /类型:3 /子类型:信息
  

数据提取:

<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>
  • EventId:131085 /类型:3 /子类型:Stop / ActivityName:在连接“ http://localhost:8733/Test/”上收到的字节
  • 事件ID:131085 /类型:3 /子类型:错误/异常类型:System.TimeoutException,mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089

0 个答案:

没有答案