2011-07-21 69 views
3

我正嘗試使用一個.aspx,.asmx和.svc文件分別託管一個簡單的應用程序。我跟着的帶領下實現了主機(因爲我是很新的Linux世界,過了好一會兒去了解它!):Mono上的WCF主機問題

http://www.mono-project.com/Mod_mono#Manual_Mod_Mono_Configuration

所有的主機後,我能夠訪問aspx和asmx文件。但是,當我嘗試訪問svc文件時,出現以下錯誤:

ServiceHost必須至少有一個由配置,行爲或對AddServiceEndpoint的調用定義的應用程序端點(不包括元數據交換端點)方法。

HttpListenerContext不匹配任何註冊信道

我有我的web.config中定義一個非常簡單的服務端點,看起來象下面這樣:

<system.serviceModel> 
<services> 
    <service name="TestWCFService"> 
    <endpoint address="http://localhost/MonoTest/TestWCFService.svc" binding="basicHttpBinding" 
       contract="MonoTest.ITestWCFService"></endpoint> 
    </service> 
</services> 
<behaviors> 
    <serviceBehaviors> 
    <behavior name=""> 
     <serviceMetadata httpGetEnabled="true" /> 
     <serviceDebug includeExceptionDetailInFaults="true" /> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 

你能告訴我我做錯了什麼嗎?

注:我使用MS VS 2010創建該項目,然後發佈它。發佈的目錄被複制到Apache/Linux環境。 WCF不使用任何複雜類型。我正在使用單聲道版本2.8.2

更新 更新:我試過使用2.10.2單聲道。此錯誤是過去了,我現在面臨一個新問題:

XmlSchema error: Named item http://tempuri.org/:DoWork was already contained in the schema object table. Consider setting MONO_STRICT_MS_COMPLIANT to 'yes' to mimic MS implementation. Related schema item SourceUri: , Line 0, Position 0. 

回答

4

後在該R & d的幾周我想通了這一點。出於某種原因,我無法讓服務WSDL正常工作(這意味着我無法從瀏覽器訪問.svc)。但是,當我嘗試使用Channel Factory訪問它時,該服務正常工作。

因此,我已經在Channel Factory中實施了一切(對於我的Silverlight應用程序),現在一切似乎都正常。我仍然不確定如何獲得WSDL的工作,但對我而言這並不重要。