【发布时间】:2019-04-25 22:03:33
【问题描述】:
我们有一个服务器,它有几种类型的 api(基于 httplistener 的自定义 XML API、基于 WCF 的 SOAP API 和基于 WEB API 的 REST API)。我们想将所有 API 移到 WEB API(有很多原因),它应该是向后兼容的。
支持url结构的原因之一:services/service1。服务/服务2。在这种情况下,它应该在一个端口上。它是分发给多个客户的 Intranet 应用程序,应该易于部署、安装。因此,我们不能在客户端(代理和其他)进行长配置。
有没有简单的方法在 web api 上实现 SOAP 服务?乍一看应该很容易将 httprequest 解析为键入的肥皂信封(基于现有合同)并序列化答案。当然,合约中有很多动作和数据类型。
PS:我不想查看 servicestack:)
更新:
我上面描述的问题可以通过代理http请求到soap服务来解决(它只能与没有安全性的basichttpbinding一起使用。如果WCF服务需要NTLM身份验证,它将不起作用):
[HttpPost]
public async Task<IHttpActionResult> SoapAction()
{
var httpClient = new HttpClient();
var httpRequestMessage = new HttpRequestMessage(HttpMethod.Post, "http://localhost:8111/soap")
{
Content = this.Request.Content
};
foreach (var header in this.Request.Headers)
{
httpRequestMessage.Headers.Add(header.Key, header.Value);
}
var responseMessage= await httpClient.SendAsync(httpRequestMessage).ConfigureAwait(false);
return ResponseMessage(responseMessage);
}
但我仍然想知道 C# 中是否有任何 SOAP 解析器,因为我的服务器支持 NTLM 身份验证。
【问题讨论】:
标签: c# wcf soap asp.net-web-api