我很惊讶这个问题,因为我记得在早期的.NET Core版本中成功了。我正在开发一个.NET Core 2.2应用程序,现在需要被另一个应用程序(外部开发)调用,该应用程序只能发布xml....
这是我的ConfigureServices方法:
以下请求会导致响应状态码为200:
现在我有麻烦了。如果我将Xml格式作为输出类型 Accept,它可以正常工作。但是,如果我自己发布为Content-Type并测试,就会出现500错误。我也尝试了this (旧)方法,但在.NET Core 2.2中似乎不起作用。我做错了什么?如何在.NET Core 2.2中发布我的xml? 在有用的备注后更新。 导致500的异常如下:
这是我的ConfigureServices方法:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2).AddXmlSerializerFormatters();
}
这是我的控制器:
[Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
// POST api/values
[HttpPost]
public ActionResult<object> Post([FromBody] object value)
{
return ("Hi", "Hi2");
}
}
以下请求会导致响应状态码为200:
POST http://localhost:58774/api/values
Content-Type: application/json
Accept: application/xml
User-Agent: vscode-restclient
Accept-Encoding: gzip
{"a":5}
这给我返回了 XML 格式的响应。
POST http://localhost:58774/api/values
Content-Type: application/json
Accept: application/json
User-Agent: vscode-restclient
Accept-Encoding: gzip
{"a":5}
返回 JSON 格式的响应。
然而,这个调用会导致一个状态码为 500 的响应(这正是我的问题所在):
POST http://localhost:58774/api/values
Content-Type: application/xml
Accept: application/xml
User-Agent: vscode-restclient
Accept-Encoding: gzip
<A a="5"/>
现在我有麻烦了。如果我将Xml格式作为输出类型 Accept,它可以正常工作。但是,如果我自己发布为Content-Type并测试,就会出现500错误。我也尝试了this (旧)方法,但在.NET Core 2.2中似乎不起作用。我做错了什么?如何在.NET Core 2.2中发布我的xml? 在有用的备注后更新。 导致500的异常如下:
但是,如果我添加一个xmlns(基于this),我仍然会得到500:System.InvalidOperationException: XML文档中存在错误(1,11)。---> System.InvalidOperationException:未预期到。
POST http://localhost:5000/api/values
Content-Type: application/xml
Accept: application/xml
User-Agent: vscode-restclient
Accept-Encoding: gzip
<f:table xmlns:f="https://www.w3schools.com/furniture">
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>
然后异常信息是:
System.InvalidOperationException: XML文档中存在一个错误(1, 56)。 ---> System.InvalidOperationException: https://www.w3schools.com/furniture'> 是未预期的。
可能需要更改我的xml。如何更改?即使来自w3cschools的示例也对我没有帮助。
<?xml version="1.0" encoding="UTF-8" ?
- Erresenobject value
的期望值是多少? - Edward