gpt4 book ai didi

asp.net-core - 增加asp.net核心中的最大url长度

转载 作者:行者123 更新时间:2023-12-04 16:05:45 24 4
gpt4 key购买 nike

我有一个 asp.net 核心 web api,可以启用 tts 请求。你基本上要求http://server.url/Whatever you want it to say.mp3获得带有 tts 朗读文本的 mp3。

但问题是,它会返回 400 - The request URL is invalid如果我传递一个长字符串。服务器似乎遇到了某种最大 URL 长度限制。我可以找到有关如何解决此问题的信息,这是“经典”的 asp.net web.config,但无法找到如何在 asp.net 核心中解决此问题的信息。

在asp.net core中增加最大URL长度的正确方法是什么?

更新:

确切的网址是例如:

http://localhost:5000/api/mp3/nl-NL/male/1/Wikipedia%20is%20een%20online%20encyclopedie%20die%20tracht%20inhoud%20te%20bieden%20die%20vrij%20herbruikbaar,%20objectief%20en%20verifieerbaar%20is.%20Het%20project%20is%20gebouwd%20op%20vijf%20zuilen.%20De%20Nederlandstalige%20versie%20startte%20op%2019%20juni%202001%20en%20is,%20gemeten%20naar%20het%20aantal%20artikelen,%20met%20bijna%201,9%20miljoen%20artikelen%20de%20op%20vier%20na%20grootste%20taalversie.mp3

它是 URL 编码的。我会试着弄清楚确切的最大值是多少。

我不能使用 POST,因为将要使用它的工具只支持 mp3 文件的 url(因此在我的 Controller 中使用了 .mp3 扩展名)。

更新 2

它接受的最长请求有 397 个字符,这似乎不太合乎逻辑。如果我再添加一个,它将返回一个代码 400。

更新 3

事实证明,只有在部署在服务器上(使用 IIS)时才会出现这个问题,在本地运行时,它支持更长的字符串(我还没有看到它返回代码 400)。我将不得不查看 IIS 以查看哪里出错了。

最佳答案

事实证明,我需要做两件事来解决这个问题:

更改 web.config

我需要将以下内容添加到 web.config 以指示 IIS 允许更长的 URL:

<system.webServer>
<security>
<requestFiltering allowDoubleEscaping="false">
<requestLimits maxAllowedContentLength="30000000" maxUrl="40960" maxQueryString="20480" />
</requestFiltering>
</security>
</system.webServer>

编辑注册表

在此之后,IIS 仍然会抛出代码 400,因为 UrlSegment 长度太长。可悲的是,改变这一点的唯一方法是通过一些小的注册表黑客攻击。

导航至 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters并找到关键 UrlSegmentMaxLength。如果它不存在,请创建一个值类型为 REG_DWORD 的。我使用 1000 HEX (4096 DEC) 作为值。如果 key 尚不存在,则默认值为 260。

在更改生效之前,我需要重新启动服务器。

关于asp.net-core - 增加asp.net核心中的最大url长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42243211/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com