如何修复 ASP.NET Core 中的 WrongInputException?

问题描述

我想使用另一个团队准备的 SOAP Web 服务,在我在 ASP.NET Core 中准备的新 REST API 内部使用。我的网络服务客户端代码是用 WCF Web Service Reference Provider Tool 搭建的。我根据团队的命名约定清理了代码(例如,我更改了属性方法名称)。

当我通过我的新 REST API 发送请求时,我收到了 WrongInputException。我检查了一个示例请求中的所有参数,它们都在我的 C# 代码使用脚手架客户端的同一个地方。

我不知道我的新 REST API 到底发送了什么消息。

解决方法

就我而言,所描述的行为和 WrongInputException 的主要原因是 premature refactoring我在不知道后果的情况下更改了 Web 服务客户端中的属性名称。

例如如果请求正文中的元素是 objectRefNum,那么我不能简单地更改脚手架服务引用类中的相关属性,因为 - 无需额外配置 - 该名称会以相同的字母大小写复制到请求正文中SOAP 信封。 SOAP 信封应以区分大小写的模式进行编码。

为了在 ASP.NET Core 中跟踪我的新 REST API 发送的原始请求正文,我按照 this excellent answer 中的说明进行操作。

(注意,顺便说一句,IDE可以处理这种错误(应用不合适的字母大小写),至少作为警告,但事实并非如此:我们在进行重构时需要小心,即使我们具有覆盖所有路径的单元测试,即使我们使用 IDE 支持的语义重命名。)