2009-10-16 144 views
0

我正在使用从wsdl生成的接口,并且在尝试将我的服务作为Windows服务托管时遇到了问题。App.config命名空间问题

接口上方出现以下行。除非我从

[System.ServiceModel.ServiceContractAttribute(Namespace="http://xxxxxx.com/", ConfigurationName="IService")] 

将其更改为

[System.ServiceModel.ServiceContract] 

我无法启动Windows服务承载我的程序(错误日志在事件查看器中的合同IService无法在找到说通过服务实现的合同清单)我列出端点我app.config文件如下:

endpoint address="" 
       binding="basicHttpBinding" 
       contract="Service.IService" 

当我改变合同“http://xxxxxxx.com/IService”,因为它也会发生这种情况出现在ServiceContractAttribute中。有关我如何解决这个问题的任何想法?

配置文件的服务部分:

<service name="Service.Service" 
      behaviorConfiguration="myServiceBehavior"> 
    <host> 
     <baseAddresses> 
     <add baseAddress="http://localhost:8000/Service"/> 
     </baseAddresses> 
    </host> 
    <endpoint address="" 
       binding="basicHttpBinding" 
       contract="Service.IService" /> 
    <endpoint address="mex" 
       binding="mexHttpBinding" 
       contract="Service.IService" /> 

    </service> 
<behaviors> 
    <serviceBehaviors> 
    <behavior name="myServiceBehavior"> 
     <serviceMetadata httpGetEnabled="true"/> 
     <serviceDebug includeExceptionDetailInFaults="True"/> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 
+1

这听起来不像端点配置问题,而是服务配置问题。你的属性提到ConfigurationName =“IService”:你可以发布名称=“IService”的app.config元素? – itowlson 2009-10-16 19:35:43

回答

1

在配置端点元件的合同属性需要匹配ServiceContractAttribute的的代码中的ConfigurationName属性的值。所以在你的情况下,只需更改配置,以便它读取contract =“IService”,你应该很好。

+0

这允许服务启动,但当客户端尝试使用该服务时,我遇到了另一个问题。时间提出一个新问题! – oltman 2009-10-21 14:39:26

0

看来,它无法找到终点。您是否使用过终端来询问端点以查看它是否在提供的地址处作出响应?

0

“itowlson”是最有可能在正确的轨道,他的评论 - 您原来的服务合同定义的配置名称:

[ServiceContract(Namespace="http://xxxxxx.com/", 
       ConfigurationName="IService")] 

但在你的配置部分没有这样的服务配置。

尝试修改此:

<service name="Service.Service" 

<service name="IService" 

(或者,改变的ServiceContract到:

[ServiceContract(Namespace="http://xxxxxx.com/", 
       ConfigurationName="Service.Service")] 

这两个名字必须一致或者干脆离开了!服务合同中的配置名称:

[ServiceContract(Namespace="http://xxxxxx.com/")] 

在这种情况下,将根据实际实现服务合同的服务类的Namespace.ServiceClassName模式找到服务配置。

无论哪种方式,您都需要确保ServiceContract属性和配置文件中的信息匹配。

马克

+0

即使ConfigurationName和“<服务名称”匹配(Service.Service),它仍不会作为Windows服务启动。我收到错误“事件日志中的服务”服务“实施的合同列表中找不到合同名称'Service.IService'。 – oltman 2009-10-21 14:29:20