2009-10-16 521 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