英文:
ASP.NET routing behind an API management service
问题
Here are the translated parts:
尽管这并不是世界上最好的事情,但我有一个设置,其中我列出了一些 Web 应用程序作为 Azure API 管理服务中的 API。
我注意到像 Html.ActionLink
这样的调用会生成一个基于 Web 应用程序 URL 的 URL,而不是 APIM 实际使用的 实际 URL。
例如,如果我有一个名为 "example-web-app" 的 Web 应用程序,Html.ActionLink
生成的 URL 可能是
https://example-web-app/Home/Index
但如果我通过 APIM 调用它,我的起始 URL 将是
https://somedomain.com/examplewebapp
是否有一种方法可以强制像 Html.ActionLink
这样的调用生成自定义 URL?或者这是否需要成为整个 Web 应用程序的通用设置?
编辑:原来是缓存问题。然而,设置 API URL 后缀会导致以下情况:
URL:
https://somedomain.com/examplewebapp/Home/Index
Html.ActionLink
生成的 URL:
https://somedomain.com/Home/Index
英文:
Whilst it's not the nicest thing in the world, I have a setup where I have a handful of web apps listed as APIs in an API Management Service in Azure.
I've noticed that a call like Html.ActionLink
generates a URL based on the web app URL, rather than the actual URL being used by the APIM.
For example, if I have a web app called "example-web-app" the URL produced by Html.ActionLink
might be
https://example-web-app/Home/Index
But if I'm calling it through APIM, my start URL will be
https://somedomain.com/examplewebapp
Is there a way to force calls like Html.ActionLink
to produce a custom URL? Or would this need to be a generic setting for the entire web app?
Edit: Turns out there was a caching issue. However, setting the API URL suffix causes the following:
URL:
https://somedomain.com/examplewebapp/Home/Index
Html.ActionLink
generated URL:
https://somedomain.com/Home/Index
答案1
得分: 0
redirect-content-urls
策略是针对以下情况创建的:https://learn.microsoft.com/azure/api-management/redirect-content-urls-policy 它将尝试将您的API的后端URL在响应中替换为APIM的前端URL。如果对您的情况来说过于严格,还可以使用常规的find-and-replace-policy
(https://learn.microsoft.com/en-us/azure/api-management/find-and-replace-policy)。
英文:
redirect-content-urls
policy was created with this scenario in mind: https://learn.microsoft.com/azure/api-management/redirect-content-urls-policy It will try to replace your API's backend URLs in response with APIM's frontend URL. If it proves to be too rigid for your scenario, regular find-and-replace-policy
(https://learn.microsoft.com/en-us/azure/api-management/find-and-replace-policy) could also be used.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论