4

我正在尝试使用一个 .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 不使用任何复杂类型。我正在使用单声道版本 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.
4

1 回答 1

5

经过数周的研发,我已经弄清楚了这一点。出于某种原因,我无法让服务 WSDL 工作(这意味着我无法从浏览器访问 .svc)。但是,当我尝试使用 Channel Factory 访问它时,该服务运行良好。

所以我已经在 Channel Factory 中实现了所有东西(对于我的 Silverlight 应用程序),现在一切似乎都运行良好。我仍然不确定如何让 WSDL 工作,但目前这对我来说并不重要。

于 2011-09-08T05:55:59.893 回答