【发布时间】:2019-12-09 15:19:18
【问题描述】:
我的 asp.net core 3.0 api 有一个非常奇怪的问题,它可以在我的机器上正常运行,但在特定情况下它在 Azure 上无法运行。
假设我们有这条路线,并且我的机器和 azure Web 应用都使用完全相同的代码查询同一个数据库:
/api/employees/{email}
如果我使用现有的电子邮件,即:j.doe@mail.com,这适用于我的机器和 Azure,并带有以下回复:
{
"employeeId": "12904a63-94b5-411a-87bc-07bb2d2de4f0",
"lastName": "John",
"firstName": "Doe",
"email": "j.doe@mail.com"
}
现在,如果我尝试发送此电子邮件 jane.doe@mail.com,此用户在我的数据库中不存在,并且我的计算机和 Azure 上有此 404 消息:
{
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.4",
"title": "Not Found",
"status": 404,
"traceId": "00-b8cbc03357fc564bb22dc6ff231336ef-e10fac745a531549-00"
}
现在事情变得越来越奇怪了:
我的数据库中有这个电子邮件地址 jane.doe+test@mail.com:
在我的机器上我有这个结果:
{
"employeeId": "4569bc34-94b5-411a-87bc-07bb2d2de4f0",
"lastName": "Jane",
"firstName": "Doe",
"email": "jane.doe+test@mail.com"
}
在天蓝色我有这个 404 错误
The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.
在 azure web 应用程序上打开日志我有这个跟踪:
2019-12-09 14:48:13 MYAPI-QA GET /api/employees/jane.doe+test@mail.com X-ARR-LOG-ID=8c3956c0-3dba-46e5-a292-7b59facfc7ce 443 - 1.1.1.1 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64;+rv:71.0)+Gecko/20100101+Firefox/71.0 ARRAffinity=;+AppServiceAuthSession= - myapi.azurewebsites.net 404 11 0 433 2335 79
我的 webapi 没有写入日志,而且看起来这个 404 消息根本不是来自我的 webapi...
【问题讨论】:
-
您找到答案了吗?我对包含 %2B 的路线也有同样的问题
-
模型绑定似乎将 %2B 转换为空格而不是 + 或者至少它是双重转义它。 “this+is+a+string”来自 url 中的“this is a string”。但是,当一个 + 打算作为一个加号时,它似乎会加倍解决它。我在 url 中传递“qu%2B9I”,它绑定到包含“qu 9l”的字符串变量。现在找出原因
-
只是为了跟进我的上一条评论。它必须是 vue/nuxt 以某种方式改变它。直接调用get api方法按预期工作。
标签: c# azure asp.net-core azure-web-app-service