gpt4 book ai didi

c# - .NET WebApi 中的服务器传输/重定向

转载 作者:行者123 更新时间:2023-11-30 21:40:29 26 4
gpt4 key购买 nike

我们公司有一个内部 API (.NET WebApi) 为我们的许多应用程序提供服务。现在,我们将在外部托管一个应用程序,并且决定不向 Internet 开放我们的主服务器。

相反,他们将在单独的服务器中创建一个包装器,该服务器在我们的防火墙中正确设置并且可以访问我们的网络。

问题是:我们希望这个包装器 API 尽可能简单,并且基本上将请求重定向到我们的内部 API。

像这样:

[HttpGet]
[Route("api/PDF/{orderid}")]
public IHttpActionResult GetOrderPDF(string orderid, bool showpictures = false, string disposition = "attachment")
{
string url = "http://MYINTERNALSERVER/api/PDF/" + orderid;
System.Uri uri = new System.Uri(url);
return Redirect(uri); //Server.Transfer ?
}

使用此方法的问题是我的外部客户端将尝试访问我们的内部服务器,当然,将无法访问。

我们想要一个包装器,以便我们只公开我们想要的方法。

我阅读了有关 IIS 重定向的内容,但如果我重定向所有请求,我几乎会将所有方法暴露给互联网。

有什么建议吗?

最佳答案

第一次需要执行 POST 请求时,这种方法会失败,因为您无法重定向 POST 操作。

您不需要全新的应用程序。你需要的是一个在互联网上公开可用的反向代理(考虑 NGINX )。它可以将跨防火墙的流量代理到为 WebAPI 提供服务的任何内容。

这里的好处是:

  • 如果外部流量出现问题(黑客攻击),您可以在不干扰内部流量的情况下禁用反向代理
  • 如果您采用当前方法,或尝试编写自己的代理,则您需要在 WebAPI 契约(Contract)发生变化时随时修改它。您不需要使用反向代理来执行此操作,因为该代理的设计目的是对其所服务的 HTTP 流量基本透明。
  • 无需编写代码。

关于c# - .NET WebApi 中的服务器传输/重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44572717/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com