mje*_*son 2 asp.net-core asp.net-core-webapi
我有一个asp.net核心网络API,可启用tts请求。您基本上要求http://server.url/Whatever you want it to say.mp3获得带有tts语音文本的mp3。
但是问题是,400 - The request URL is invalid如果我传递一个长字符串,它将返回a 。好像服务器正在达到某种最大URL长度限制。我可以找到有关如何解决此问题的信息,这是“经典” asp.net web.config,而在asp.net核心中却找不到如何解决此问题。
在asp.net核心中增加最大URL长度的正确方法是什么?
更新:
确切的网址例如是:
它是URL编码的。我将尝试找出确切的最大值。
我无法使用POST,因为要利用它的工具仅支持mp3文件的网址(因此,在控制器中使用了.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>
Run Code Online (Sandbox Code Playgroud)
编辑注册表
此后,IIS仍将抛出代码400,因为UrlSegment的长度太长。可悲的是,更改此设置的唯一方法是通过一些较小的注册表黑客攻击。
导航至HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters并找到键UrlSegmentMaxLength。如果不存在,请使用REG_DWORD的值类型创建一个。我使用1000 HEX(4096 DEC)作为值。如果密钥尚不存在,则默认值为260。
在更改生效之前,我需要重新启动服务器。
| 归档时间: |
|
| 查看次数: |
7148 次 |
| 最近记录: |