.NET - 编码适用于本地主机,但不适用于开发环境

发布于 2025-01-12 03:52:03 字数 415 浏览 0 评论 0原文

我有一个端点

[HttpGet, Route("ICDCodes/BySearchText/{searchText}", Name = "GetIcdCode")]

当我尝试在本地主机上传递一些带有特殊字符的字符串(50$%b/de90 - 例如)时 - 返回 204 (因为在数据库中没有此类代码),但在开发环境中具有相同参数的相同端点返回 404。

在 Appinsights 中,开发的 URL 如下所示 - ICDCodes/BySearchText/50$%25b/de90

这是因为斜杠未编码,还是因为“%”被编码为“%25”,或者两者兼而有之?但为什么它在本地有效呢?

I have an endpoint

[HttpGet, Route("ICDCodes/BySearchText/{searchText}", Name = "GetIcdCode")]

When I'm trying to pass some string with special characters (50$%b/de90 - for example) on localhost - 204 is returned (as it should be because in database there's no such code), but the same endpoint with the same parameter on Dev environment returns 404.

In Appinsights URL for dev looks like this - ICDCodes/BySearchText/50$%25b/de90

Is this because slash is not encoded, or because "%" is encoded to "%25", or both? But why it works locally?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

や三分注定 2025-01-19 03:52:03

从技术上讲,它甚至在本地也不起作用,因为 url 中有一个 / ,它意味着新的路由部分。顺便说一下,你可以使用 * 作为路由参数,它会忽略 url 中的 / 作为新的路由部分,如下所示:

[HttpGet, Route("ICDCodes/BySearchText/{*searchText}", Name = "GetIcdCode")]

Technically it shouldn't work even on your local because there is a / in the url and it means new route section. by the way you can use * for route parameter and it ignore the / in the url as a new route section, like this:

[HttpGet, Route("ICDCodes/BySearchText/{*searchText}", Name = "GetIcdCode")]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文