WCF - 不创建服务引用

时间:2011-04-14 14:17:46

标签: c# windows wcf service

我的WCF服务工作正常,然后突然停止工作。我不认为我改变了任何配置。

WCF服务由Windows服务托管。

奇怪的是,当我添加服务引用时,它将识别合同和所有暴露的方法。但是,如果我去浏览器,我得到404错误,编译器没有创建服务。我已删除并尝试重新添加引用但没有运气

此外,我部署的应用程序仍然可以访问wcf服务。

问题1: 在WCF Windows服务中,我是否应该能够在浏览器中看到wsdl(http:// localhost:8080 / MaestroService / mex)。在IE中,我收到400 Bad Request。我假设这是问题的根源。

问题2: 还有别的吗?

的App.config

<system.serviceModel>
<bindings>
  <basicHttpBinding>
    <binding name="NewBinding0" />
  </basicHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
  <behavior name="metadataAndDebug">
    <serviceMetadata httpGetEnabled="true" />
    <serviceDebug httpHelpPageEnabled="true" includeExceptionDetailInFaults="true" />
  </behavior>
</serviceBehaviors>
</behaviors>
<services>
  <service behaviorConfiguration="metadataAndDebug" name="MaestroServiceLibrary.MaestroService">
    <endpoint address="basic" binding="basicHttpBinding" bindingConfiguration="NewBinding0"
      name="basicHttp" contract="MaestroServiceLibrary.IMaestroService" />
    <endpoint address="mex" binding="mexHttpBinding" bindingConfiguration=""
      contract="IMetadataExchange" />
    <endpoint address="net.tcp://localhost:8888/MaestroService" binding="netTcpBinding"
      bindingConfiguration="" name="netTcpBinding" contract="MaestroServiceLibrary.IMaestroService" />
    <endpoint address="net.pipe://localhost/MaestroService" binding="netNamedPipeBinding"
      bindingConfiguration="" name="netNamedPipeBinding" contract="MaestroServiceLibrary.IMaestroService" />
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:8080/MaestroService" />
      </baseAddresses>
    </host>
  </service>
</services>

错误编译:

Custom tool error: Failed to generate code for the service reference 'MaestroService'.  Please check other error and warning messages for details.

Custom tool warning: Cannot import wsdl:binding


Detail: There was an error importing a wsdl:portType that the wsdl:binding is dependent on.

XPath to wsdl:portType://wsdl:definitionf [@targetNamespace ='http://tempuri.org/']/wsdl:portType [@ name ='imaestroService'] XPath到错误源:// wsdl:definitions [@ targetNamespace ='http://tempuri.org/'] / wsdl:binding [@ name ='basicHttp']

更新

我打开了跟踪,我看到了这个: 由于EndpointDispatcher上的AddressFilter不匹配,因此无法在接收方处理To“http:// localhost:8080 / MaestroService / mex / mex”的消息。检查发送方和接收方的EndpointAddresses是否一致。如果我搞清楚,我会更新这个问题。

更新V2

我去了同一个解决方案中的另一个项目。我能够在那里添加服务没有问题。我注意到我在控制台应用程序中使用3.5而在wpf浏览器应用程序中使用4.0。当我回来报告这个时,我在上次更新中注意到它有/ mex / mex,即使我在网址中添加了http://localhost:8080/MaestroService/mex。我只试了http://localhost:8080/MaestroService而且工作正常!!!

最后,我最终使用了Migual Castro技术here,在那里你创建了conracts和代理。哪个很好看,它是如何工作的以及VS正在做什么。但那一天半回来会很好。

感谢大家的建议。

1 个答案:

答案 0 :(得分:0)

您正在作为Windows服务运行。

Windows服务在用户帐户的安全上下文中运行。

如果用户帐户的密码更改或过期,则服务不会运行。

您应该检查的第一件事是:服务是否正在运行。