【问题标题】:Spoofing a remote location for a local file欺骗本地文件的远程位置
【发布时间】:2021-08-20 16:43:50
【问题描述】:

我正在编写一个由 C# webapi 应用程序提供服务的 Vue JS 前端。 webapi 指定将图像保存到自己机器上的 E: 驱动器文件夹,并提供 src 链接供 UI 使用。

一切都很好,但现在我想在本地运行所有内容时进行测试(而且我无权访问 E: 驱动器)。问题:我可以将图像保存到我的 C: 驱动器,但是(出于显而易见的原因)当我尝试显示它们时 UI 浏览器显示“不允许加载本地资源”。

是创建某种远程托管的唯一解决方案吗?或者是否可以在文件实际存储在本地时“欺骗”远程 blob 目标?像 Javascript 的 URL.createObjectURL 方法但在 webapi 中?

【问题讨论】:

  • "提供 src 链接" - 这些链接是什么样的? file 指向 E 的链接:驱动器也应该出现故障...
  • 我相信this answer 解释了你想要做什么。基于this answer,您也可以在解决方案资源管理器中执行此操作。或者,您可以使用本地 IIS 进行调试,并以这种方式创建一个虚拟目录到另一个位置。
  • @NetMage 在 live 中,webapp 保存到本地 E: 驱动器,但返回指向实际存储图像的远程 blob 位置的 src 链接。我会检查那个虚拟目录的东西。为此干杯!
  • @NetMage 哇,这真的有效!我怎么给你积分!?
  • 你可以投票给我的评论(当你有足够的分数时),但这不是必需的。

标签: c# vue.js testing asp.net-core-webapi


【解决方案1】:

好的,NetMage 关于创建虚拟 IIS 目录的建议奏效了!

您可以为正在运行的指向本地文件夹的 IIS 应用程序创建一个虚拟目录。

  • 转到位于 [解决方案文件夹]/.vs/[解决方案名称]/config 中的 applicationhost.config
  • 在配置文档中找到<sites> 部分
  • 为您的 Web 应用(例如 WebApi)找到站点
  • 添加一个新的虚拟目录元素,指定远程路径并指向您的本地文件夹:
<sites>
    <site name="App.WebApi" id="1">
        <application path="/" applicationPool="App.WebApi AppPool">
          <virtualDirectory path="/" physicalPath="C:\Repos\Code\App.WebApi" />
          <virtualDirectory path="/Media" physicalPath="C:\Media" /> <--THIS IS MY NEW ONE
        </application>
        <bindings>
          <binding protocol="http" bindingInformation="*:8080:localhost" />
        </bindings>
    </site>
<sites>
  • 现在你可以设置图片的src指向“http://localhost:8080/Media/image.png”,浏览器会认为它是一个远程资源(不再抱怨)!

【讨论】:

    【解决方案2】:

    如果您有权访问 API 的源代码,则可以在本地构建和运行它,考虑到它可能需要您没有存储在本地计算机上的环境变量,并且需要一些配置才能在外部运行它当前的生产环境。

    如果这是您能够做到的,那么您需要在前端 API 常量中更新 API 域名(例如 http://{APIDOMAIN}/your/route 到 http://localhost: 5000/your/route) 以便在本地进行测试。

    【讨论】:

      猜你喜欢
      • 2013-08-27
      • 2017-05-14
      • 2017-03-14
      • 2011-10-01
      • 2021-06-09
      • 1970-01-01
      • 1970-01-01
      • 2013-04-22
      • 2012-01-03
      相关资源
      最近更新 更多