c# - POST HttpRequestMessage 为空

标签 c# asp.net-web-api asp.net-core

我在 ASP.NET Core 中有一个 Web API,该方法具有以下签名:

[HttpPost]
public HttpResponseMessage Foo(HttpRequestMessage data)

这是我发送给操作的数据:

<s:Envelope
    xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
    <s:Body>
        <DTO
            xmlns="http://tempuri.org/">
            <field1>1</field1>
            <field2>2</field2> 
        </DTO>
    </s:Body>
</s:Envelope>

我正在向 Postman 发出请求,其中 Data 是一条 soap xml 消息。 header 的 Content-Type: :"application/xml" (也试过:application/x-www-form-urlencoded)

由于某些奇怪的原因,当我尝试读取这些数据时,我可以看到以下内容: 方法:获取 内容:无 请求网址:无 header :{{}}

在 Start 中,我还包含了 XmlFormatters(假设这是问题的根源):

services.AddMvc(options =>
        {
            options.RespectBrowserAcceptHeader = true;
            options.InputFormatters.Add(new XmlSerializerInputFormatter());
            options.OutputFormatters.Add(new XmlSerializerOutputFormatter());                    
        }
    );

但这并没有帮助。

我还有另一个 Web Api(用于 .NET Framework),我在其中成功接收到 HttpRequestMessage 参数。

问题的根源是什么?

最佳答案

ASP.NET Core 不处理开箱即用的 SOAP 请求。您需要添加一些中间件来处理 SOAP 消息。我以前使用过这个项目并且效果非常好:

https://github.com/DigDes/SoapCore

关于如何使用她的库有一个详细的演练:

https://stackify.com/soap-net-core/

关于c# - POST HttpRequestMessage 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49666860/

相关文章:

c# - 如何对具有 void 返回类型的方法进行单元测试?

c# - 通过资源将 Python 嵌入到 C# 中

asp.net-mvc - 续订 Azure ACS 颁发的 JWT

asp.net-web-api - 如何加强 ASP.NET WebApi OData 服务以防止滥用?

asp.net-mvc - ASP.NET MVC4 WebApi 参数为空 - 仅在一台机器上

c# - 带有文件和字典的 AspNetCore3 多部分帖子未按预期工作

c# - 使用 SetValue 时未创建注册表项

c# - 如何使用c#获取两个日期之间的天数和夜数

c# - 使用 ZXing.Net 生成 EAN 条码并获取 base64 字符串

c# - 即使包含不记名 token ,Net Core API 也会返回 401