为什么我对ASP资源的请求未按Azure API Management的要求进行路由?

时间:2019-04-05 15:53:43

标签: azure-api-management

对于我的用例,我想使用Azure APIM作为代理。

(编辑:我使用的是“消费”层,此处给出的答案适用于标准层。如果找到支持MS的解决方案,我将对其进行更新。)

这样

GET https://my-awesome-api.azure-api.net/default.css

获取并返回那里的内容:

GET https://my-backend.my-domain.com/default.css

除了ASP文件之外,它都可以正常工作。如果我的资源是/default.asp,我将得到APIM直接生成的404(不是后端,根本不会调用)。这个问题在每个级别都会重现(我可以获取/foo/default.css,但在/foo/default.asp上可以获取404)。

我在文档中找不到默认情况下与ASP文件的特殊处理有关的任何内容(或与此相关的任何其他内容)。其他类型的资源运行良好的事实更加令人困惑。

GET /default.css -> works
GET /default.asp -> gets the Azure 404
GET /i-dont-exist.css -> gets the backend 404
GET /i-dont-exist.asp -> gets Azure 404

Azure的404:

HTTP/1.1 404 Not Found

content-length: 103
content-type: text/html
date: Fri, 05 Apr 2019 15:35:34 GMT
vary: Origin
x-powered-by: ASP.NET
The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.

1 个答案:

答案 0 :(得分:2)

您的API最有可能配置错误。似乎您想传递所有流量,因此您需要创建Web服务URL设置为“ https://my-backend.my-domain.com”且Path后缀为“ /”的API。 在它的下面,为要代理的每个HTTP方法创建一个操作,并将URL模板设置为/*。