C# 如何缩短查询字符串?

C# 如何缩短查询字符串?,c#,asp.net-core-mvc,request.querystring,C#,Asp.net Core Mvc,Request.querystring,我有一个MVC核心应用程序,提交时的一个表单传递的查询字符串太长: HTTP错误404.15-找不到请求筛选模块 配置为拒绝查询字符串过长的请求 我的操作方法如下所示: public async Task ExportAsync(int?itemId,SelectActiveOrInactive activeOrInactiveItems=SelectActiveOrInactive.Active) 表格如下: <form asp-controller="Allocation" asp-

我有一个MVC核心应用程序,提交时的一个表单传递的查询字符串太长:

HTTP错误404.15-找不到请求筛选模块 配置为拒绝查询字符串过长的请求

我的操作方法如下所示:

public async Task ExportAsync(int?itemId,SelectActiveOrInactive activeOrInactiveItems=SelectActiveOrInactive.Active)
表格如下:

<form asp-controller="Allocation" asp-action="Index">

这里是提交按钮:

<input type="submit" value="Export" asp-controller="Allocation" asp-action="ExportAsync" formmethod="get" class="btn btn-primary form-control mr-1" />


查询字符串确实包含了太多的内容,但正如您所看到的,我只需要
itemId
activeOrInactiveItems
。有没有办法缩短查询字符串并去掉我不需要的所有内容?我不想接触web.config。

AFAIK查询字符串是由调用者生成的,因此您应该在那里进行修补。如果您无法让调用者发送更少的参数,则您需要将查询字符串从应用程序的堆栈中进一步剥离(例如,在负载平衡器、HAProxy等中),或者,您必须更新Web.config以增加允许的最小查询字符串长度或某些IIS重写规则,否则请求将永远无法到达您的应用程序代码以进行更改。HTTP谓词(如POST)将通过请求正文发送数据。虽然GET在技术上可以有一个主体,但根据规范,没有真正的HTTP客户端(即本例中的浏览器)真正支持它。相反,数据包含在GET请求的URI中(即通过查询字符串),具体取决于。您应该使用适当的HTTP动词。如果基于你所做的,不管怎样,POST更合适,那么是的,因为你应该首先使用POST。然而,如果这应该是一个GET,那么它应该仍然是一个GET,并且您应该用另一种方式解决它。无论如何,发送大量您不想要或不需要的数据是没有意义的,因此更可能的情况是,您应该只考虑修改您的请求,以便只发送您想要的数据。不,我的意思是首先停止发送数据。例如,如果这是网页上的表单,请删除您不关心的字段。或者,如果您不能,则使用不同的表单来处理此特定请求。如果你不需要这些数据,就不要包括在内。就这么简单。