单声道WCF托管问题

时间:2011-07-21 06:16:14

标签: wcf mono mod-mono

我正在尝试使用一个.aspx,.asmx和.svc文件来托管一个简单的应用程序。我按照下面的指南来实现托管(因为我对linux世界很新,需要一段时间来理解它!):

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不使用任何复杂类型。我使用的是Mono版本2.8.2

更新 更新:我尝试使用2.10.2 Mono。这个错误消失了,我现在面临一个新错误:

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.

2 个答案:

答案 0 :(得分:5)

经过数周的R&amp; D研究,我已经想到了这一点。出于某种原因,我无法使服务WSDL工作(意味着我无法从浏览器访问.svc)。但是,当我尝试使用Channel Factory访问它时,该服务正常工作。

所以我已经在Channel Factory中实现了所有功能(对于我的Silverlight应用程序),现在一切正常。我仍然不确定如何使WSDL工作,但对我来说这对我来说并不太重要。

答案 1 :(得分:0)

Vinod - 配置中缺少MEX端点。这就是你没有得到WSDL文件的原因。看看这篇文章http://blogs.microsoft.co.il/idof/2011/08/10/wsdl-vs-mex-knockout-or-tie/

相关问题