【问题标题】:Service as ASMX and WCF作为 ASMX 和 WCF 服务
【发布时间】:2011-07-17 06:42:49
【问题描述】:

我有一个现有的 Web 服务 (ASMX),它也需要作为 WCF 公开。 ASMX 必须保留,最好不要在客户端上进行更改。根据this,我配置如下。服务层是用 CodeSmith 生成的,虽然我没有编写这些服务,但我知道它们很好,因为它们已经在野外使用了很多年。名称已更改以保护无辜.. 咧嘴笑。

在服务层有一个由 CodeSmith 生成的 XXX.YYY.MyService 类,它用

进行了双重装饰
[ServiceContract( Namespace = "http://XXX.YYY" )]

[WebService( Namespace = "http://XXX.YYY", Name = "MyService" )]

我还创建了一个空接口XXX.YYY.IMyService,由MyService 实现。此时我可以毫无问题地使用 ASMX 服务。

现在我向服务层添加一个 .svc 文件,其中包含...

<%@ ServiceHost Language="C#" Debug="true" Service="XXX.YYY.MyService" %>

... 我用...配置服务层的 web.config

<system.serviceModel>


  <behaviors>
   <serviceBehaviors>
    <behavior name="MyServiceBehavior">
     <serviceMetadata httpGetEnabled="true" />
     <serviceDebug includeExceptionDetailInFaults="true" />
    </behavior>
   </serviceBehaviors>
  </behaviors>


  <services>
   <service behaviorConfiguration="MyServiceBehavior" name="XXX.YYY.MyService">
    <endpoint binding="basicHttpBinding" contract="XXX.YYY.IMyService">
     <identity>
      <dns value="localhost" />
     </identity>
    </endpoint>
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
   </service>
  </services>


 </system.serviceModel>

如果我构建并尝试在 Visual Studio 2010 中对服务进行服务引用,我会看到 MyService 的 .ASMX 和 .SVC 版本。在“添加服务引用”对话框中展开 .svc 分支会导致引用空 XML 文档时出错。

如果我检查事件日志,我会得到...

WebHost 未能处理请求。 发件人信息:System.ServiceModel.ServiceHostingEnvironment+HostingManager/39449526 异常:System.ServiceModel.ServiceActivationException:由于编译期间出现异常,无法激活服务“/System/MyService.svc”。异常消息是:在服务'MyService'实现的合同列表中找不到合同名称'XXX.YYY.IMyService'.. --->

...但是MyService 被标记为实现IMyService ...

public partial class MyService : IMyService

我还尝试将服务的合同属性更改为MyService 而不是接口。这可行,但客户端代码会中断,因为任何创建服务实例的尝试都会失败,因为它现在是一个接口。

我希望这是有道理的。请随时提出任何额外的问题。我已经尽量详细了。

(不涉及 IIS .. 这纯粹是在 Visual Studio 2010 中)。

谢谢。

【问题讨论】:

    标签: wcf asmx


    【解决方案1】:

    您的代码实现了 IMyService,您确定它是 XXX.YYY.IMyService。

    【讨论】:

      【解决方案2】:

      我的答案是将 [ServiceContract] 和 [OperationContract] 声明移至接口。这已经为我解决了这个问题。

      HTH。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-11-07
        • 2011-02-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-05
        • 2012-04-17
        相关资源
        最近更新 更多