我有一个 WCF 服务。我有一个只能读取.asmx 文件的外部软件。是否可以在相应的 .asmx 中转换我的 .svc 文件?
5 回答
“只读取 .asmx 文件的软件”没有意义。没有软件读取 .asmx 文件或 .svc 文件 - 这两种类型都在服务器上进行解释,并且永远不会返回给客户端。
我认为您需要更深入地了解这个外部软件真正想要什么。如果它关心 URL 中的文件类型,那将完全是脑死亡!
我认为从 wcf 转换为 asmx 并不是很直接,因为您基本上会回到技术上。我想最简单的选择是编写一个 asmx webservice,它公开与 wcf 服务相同的方法并充当 wcf 服务的代理。
这样,您的外部软件可以调用 asmx 服务,而且任何新的东西都可以使用 wcf 服务。这样,您可以将逻辑保存在一个地方,但两者都可以从更新等中受益。
希望这可以帮助。
为什么要转换,保留 wcf(.svc) 和 Web 服务 (.asmx) 只需按照步骤操作即可。
- 转到您的 WCF 项目,右键单击并添加新项目并选择 Web 服务 (.asmx) 文件并展开该新文件并删除内部文件并保留 .asmx 文件。
- 打开那个 .asmx 文件,你会发现
<%@ WebService Language="C#" Debug="true" Class="{full name of web service class}" %>
将其替换为
<%@ WebService Language="C#" Debug="true" Class="full name of wcf class(.cs file not interface)" %>
最后一步在接口上添加服务合同、Web 服务和 Web 服务绑定属性,如下所述
[ServiceContract(Namespace = "namespacename")] [WebService(Name = "wcf class name")] [WebServiceBinding(Name = "wcf class name", ConformsTo = WsiProfiles.BasicProfile1_1, EmitConformanceClaims = true)]
并在界面的每个方法声明上添加 web 方法属性。
就是这样,现在您可以公开文件 .asmx 文件用于 Web 服务客户端 .svc 用于 WCF 客户端
谢谢你
如果服务很小,那也不是很难。
可以用 WCF 和 ASMX 属性来装饰一个类。然后在 ASMX 文件和 WCF 文件中引用该类。
我猜外部软件实际上是在读取由 asmx 文件生成的 WSDL,并且不支持公开的协议。一定要检查这个软件有什么级别的 SOAP 支持,并相应地调整你的 wcf 服务。