将WCF .svc文件转换为.asmx文件

时间:2009-02-16 11:14:41

标签: wcf web-services asmx visual-c++

我有一个WCF服务。我有一个外部软件只能读取 .asmx文件。是否可以在相应的.asmx 中转换我的.svc文件?

5 个答案:

答案 0 :(得分:2)

我认为从wcf到asmx的转换不是很直接,因为你基本上可以追溯到技术。我想最简单的选择是编写一个asmx webservice,它公开与wcf服务相同的方法,并充当wcf服务的代理。

这样您的外部软件就可以调用asmx服务,但是任何新的服务都可以使用wcf服务。通过这种方式,您可以将逻辑保留在一个位置,但两者都可以从更新等中受益。

希望这有帮助。

答案 1 :(得分:2)

“仅读取.asmx文件的软件”没有意义。没有软件可以读取.asmx文件或.svc文件 - 这两种类型都在服务器上解释,永远不会返回给客户端。

我认为你需要更深入地了解这个外部软件真正想要的东西。如果它关心URL中的文件类型,那将完全是脑死亡!

答案 2 :(得分:2)

为什么转换,同时保留wcf(.svc)以及Web服务(.asmx) 按照步骤进行操作。

  1. 转到您的WCF项目,右键单击并添加新项目并选择Web Service(.asmx)文件并展开该新文件并删除内部文件并保留.asmx文件。
  2. 打开你会找到的.asmx文件         <%@ WebService Language="C#" Debug="true" Class="{full name of web service class}" %>
  3. 将其替换为

    <%@ WebService Language="C#" Debug="true" Class="full name of wcf class(.cs file not interface)" %>
    
    1. 最后一步在界面上添加服务合同,Web服务和Web服务绑定属性,如下所述

      [ServiceContract(Namespace =&#34; namespacename&#34;)]   [WebService(Name =&#34; wcf class name&#34;)]   [WebServiceBinding(Name =&#34; wcf class name&#34;,ConformsTo = WsiProfiles.BasicProfile1_1,EmitConformanceClaims = true)]

    2. 并在界面的每个方法声明中添加web方法属性。

      它,现在你可以暴露给文件了 用于Web服务客户端的.asmx文件 .svc for WCF客户端

      谢谢

答案 3 :(得分:1)

我猜测外部软件实际上正在读取asmx文件生成的WSDL,并且不支持公开的协议。绝对检查这个软件支持的SOAP级别,并相应地调整你的wcf服务。

答案 4 :(得分:1)

如果服务很小,那就不是很难了。

可以使用WCF和ASMX属性来装饰类。然后在ASMX文件和WCF文件中引用该类。