.NET Core中的SOAP?

你如何在.NET Core中使用SOAP? .Net Core中是否有Apache CXF的等价物(不只是简单的SOAP客户端,而是全function堆栈)?

对不起,如果这是一个非常基本的问题,到目前为止,我的搜索没有给出任何明确的答案。

Microsoft目前不打算为.NET Core提供SOAP服务器端框架。 WCF ServiceHost和ASMX都不可用。 太早说出来,哪些非微软堆栈将会进入并成为主导者。

随着ASP.NET Web API的引入和REST端点的起义,WCF已经死了。 WCF客户端是一个互操作的故事,而不是一个前瞻性的故事(这里有完整的故事: http : //blog.tonysneed.com/2016/01/06/wcf-is-dead-long-live-mvc-6/ )

几个月前,由于WCF客户端的限制(当与Java Web Service集成时,有人创建了一个响应类,其名称与方法相同,并且在同一名称空间中,当WCF客户端发送请求时,它无法进行序列化 – 无法在SO中找到相关问题)我必须创建一个使用下划线HttpClient的SOAP HTTP客户端。 我最终发布了一个开源版本( https://github.com/gravity00/SimpleSOAPClient ),我们在生产中成功使用它,并支持.NET Core和Xamarin应用程序。 随意尝试一下。 由于版本1.x以来的一些重大改进,我推荐版本2.0.0-RC03。

在VS 2017中,截至2017年12月(v15.5),您现在可以使用连接服务从.NET Standard项目中使用WSDL将生成的WCF客户端添加到服务。 在解决方案资源管理器中,您可以通过右键单击“依赖关系”或右键单击“添加…”下的项目来实现目标。

在这里,我有一个小技巧,我在ASP.Net 5.0 Web App中使用了“框架452”

不幸的是,新的“添加连接服务” – >“WCF服务”仅在定位“.Net Core”时有效 ,因此我创建了一个与我的网络应用程序同名的基本控制台应用程序。

控制台应用程序允许添加“服务参考” 。 添加后, VS2015会在“服务引用”文件夹中创建所有服务引用。

只需将文件夹内容移动到Web解决方案,并使用接受HttpBindingsEndPoint参数的客户端构造函数。

在我的情况下,我正在连接到Echosign服务初始化客户端,如下所示:

 using (EchoSignDocumentService16PortTypeClient service = new EchoSignDocumentService16PortTypeClient(new BasicHttpBinding(BasicHttpSecurityMode.Transport), new EndpointAddress(adddress))) { ... } 

我需要为我的旧客户端使用SOAP,因此我使用.NET框架创建了一个与我的旧客户端兼容的独立SOAP库,托管在一个单独的环境中。 (SOAP.mywebsite.com)。 然后在www.mywebsite.com上(使用asp.net Core创建,我有一个rest接口.SOAP层调用其余接口。调用其余接口的库是使用Swashbuckle生成的。

解决这个问题….我在.Net 4.5中创建了一个nuget包,连接到.NET Core不支持的本机SOAP客户端。 接下来,我创建了一个针对.net框架的.Net核心应用程序。 这让我可以毫无错误地使用nuget包。