我正在尝试创建一个代理应用程序来转发我的请求。
我将像这样使用它(适用于某些公共代理):
var proxy = new WebProxy { Address = new Uri("proxyUrl") };
var httpClientHandler = new HttpClientHandler { Proxy = proxy };
var client = new HttpClient(handler: httpClientHandler, disposeHandler: true);
await client.GetAsync("https://www.whatsmyip.org");
我找到了微软的 this 和 this 指南,但是它们似乎已经过时了,因为函数不再有代理。将鼠标悬停在“代理”上会告诉我:“此功能不适用于 V4-function-apps
我发现了this,它建议改用API管理。所以我尝试了。它看起来像这样:
使用右侧的后端配置,如果我覆盖“服务 URL”,我可以将请求转发到特定的 url:
但我想使用它,如我的第一个代码片段中所示,作为适用于任何端点的真正代理。 有什么想法吗?
现在/曾经有一个名为 Azure Functions 代理的功能。这用于重定向/修改请求。但是,即使这个功能现在消失了,也不意味着您无法实现将您重定向到另一个网站的功能。
[FunctionName(nameof(Redirect))]
public static IActionResult Redirect(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "redirect")] HttpRequest req,
ILogger log)
{
return new RedirectResult("https://google.com", true);
}
如果你只是想提供一个接口供其他API调用,我会推荐APIM。但是你也应该能够使用函数返回你想要的任何结果,但你需要自己完全实现它。
它可能看起来像这样(未经测试)
[FunctionName(nameof(RemoteAPICall))]
public static IActionResult RemoteAPICall(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "proxy")] HttpRequest req,
ILogger log)
{
var response = await client.GetAsync("http://www.wtfismyip.com/json");
return new OkObjectResult(response.Content);
}
对于 Azure Function V4,您需要:
在应用设置中将EnableProxies添加到AzureWebJobsFeatureFlags,例如: “AzureWebJobsFeatureFlags”:“启用WorkerIndexing,EnableProxies”
在项目根目录添加 proxies.json,例如:
{
"$schema": "http://json.schemastore.org/proxies",
"proxies": {
"root": {
"matchCondition": {
"route": "<your-path>"
},
"backendUri": "https://<your>.azurewebsites.net/<function>"
}
}
注意:“代理”在 Azure 门户上将始终显示为灰色(禁用)。直接无视吧!