当前位置: 首页 > 知识库问答 >
问题:

输入不是有效的.NET Core Web API

陆晓博
2023-03-14

我正面临一个奇怪的问题,几乎花了4个小时没有运气。

我有一个简单的Web API,我正在表单提交时调用它。

API-

// POST: api/Tool
[HttpPost]
public void Post([FromBody] Object value)
{
    _toolService.CreateToolDetail(Convert.ToString(value));
}

HTML-

<!DOCTYPE html>
<html>
<body>

<h2>HTML Forms</h2>
<form name="value" action="https://localhost:44352/api/tool" method="post">
  First name:<br>
  <input type="text" id="PropertyA" name="PropertyA" value="Some value A">
  <br>
  Last name:<br>
  <input type="text" id="PropertyB" name="PropertyB" value="Some value B">
  <br><br>
  <!--<input type="file" id="Files" name="Files" multiple="multiple"/>-->
  <br><br>
  <input type="submit" value="Submit">

  </form>
</body>
</html>

当我点击提交按钮时,我得到以下错误-

{"":["The input was not valid."]}

启动类中的配置-

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
    services.AddSingleton<IConfiguration>(Configuration);
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseHsts();
    }

    app.UseHttpsRedirection();
    app.UseMvc();
}

这只发生在POST请求中。GET request工作正常。在邮递员REST客户端中测试时也会出现同样的问题。有什么需要帮忙的吗?如果我能提供更多的细节,请让我知道。

共有1个答案

夏高朗
2023-03-14

不要使用frombody。您将以x-www-form-urlencoded(即标准HTML表单post)提交。frombody属性用于JSON/XML。

您不能同时处理来自同一操作的标准表单提交和JSON/XML请求体。如果您需要以两种方式请求操作,则需要两个独立的endpoint,一个带有用frombody修饰的参数,另一个没有。别无他法。可以将操作的实际功能分解到两个操作都可以使用的私有方法中,以减少代码重复。

 类似资料:
  • 尽管这似乎很容易修复,但由于某种原因,我的.NET应用程序根本不将其视为有效的base64字符串。 我正在使用GMail API来获取消息,在我试图检索正文的最后一部分,我遇到了以下错误消息: 程序对它所获取的每条消息抛出异常,“第127行”位于“byte[]data”上。 我尝试在这个论坛中搜索类似的问题,但是,他们的解决方案似乎都不起作用,因为大多数人只是提供了将-and_符号更改为适合bas

  • 我目前正在尝试为一个我为好玩而开发的网站创建一个登录/创建帐户页面。在创建帐户表单中,我有一个用户名、姓名、电子邮件、密码和验证密码的输入字段。我在输入字段中也有模式,以便用户生成有效的帐户信息。以下为表格: 澄清:用户名模式要求您的用户名只有大写和小写字母和数字,并且必须至少包含5个字符,最多包含40个字符。电子邮件要求您输入有效的电子邮件地址模式。密码要求至少包含8个字符,并且必须包含大小写字

  • 这是我为CS类制作的文本冒险游戏的一小部分。你正在探索一座房子,你通过告诉游戏你想去北、南、东还是西来导航它 因此,我想添加一些内容,以便在输入无效输入时告诉您,如果您说拼写错误的单词,如Nroth、Suoth、Eas或Weast。这些只是例子,但希望你们知道我的意思,只要它不完全匹配北,南,东或西。在这段代码中,我将如何做到这一点? 我举了一个错误的例子,如果你在写“elif room==”的地

  • 我试图从包含日期列的.xlsx电子表格中导入数据。在这些列中,日期以DD-MON-YY格式显示(例如:20-aug-12)。 编辑:我的约会语言匹配器设置为“法语”。我可以改成“美国”吗?

  • 有一个M x N(M, N 我试图解决它,但找不到可能的解决办法。现在,我想知道解决这个问题的有效算法。 exam1) 给定一个5x3矩阵作为问题输入, 'o'- o o o x o x o o o x o x o o 回答)油漆的最小数量为5<绘制(0,0…0,2) 绘制(2,0…2,2) 绘制(4,0…4,2) 绘制(1,1) 绘制(3,1) 给定一个3x3矩阵, o x o o o o x

  • 名称只包含字母、连字符“-”和空格“” 第一个字母应为大写字母。 空白或连字符后应紧跟大写字母。 例如,程序只应接受以下表格: “name”或“firstname-secondname”或“firstname secondname”。 我的Java代码: 有人能帮忙吗?