欺骗本地文件的远程位置

Spoofing a remote location for a local file

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

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

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

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

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

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

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

  • 转到 applicationhost.config 位于 [解决方案文件夹]/.vs/[解决方案名称]/config
  • 在配置文档中找到 <sites> 部分
  • 找到您的网络应用程序(例如 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”,浏览器会认为这是一个远程资源(不再报错) !