通过伪装远程位置获取本地文件
P粉549986089
P粉549986089 2023-08-31 20:07:20
0
2
688
<p>我正在编写一个由C# webapi应用程序提供服务的Vue JS前端。webapi被规定保存图像到自己机器上的E:驱动器文件夹,并提供UI消费的src链接。</p> <p>一切都很好,但现在我想在本地运行时进行测试(并且我无法访问E:驱动器)。问题是:我可以将图像保存到C:驱动器,但(由于明显的原因),当我尝试显示它们时,UI浏览器会显示“不允许加载本地资源”。</p> <p>唯一的解决办法是创建某种远程托管吗?还是可能在文件实际存储在本地时“伪造”一个远程blob目标?就像Javascript的URL.createObjectURL方法一样,但在webapi中?</p>
P粉549986089
P粉549986089

全部回复(2)
P粉821808309

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

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

P粉494151941

好的,NetMage的建议创建了一个虚拟的IIS目录,起作用了!

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

  • 打开位于[solution folder]/.vs/[solution name]/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" /> <--这是我新增的
        </application>
        <bindings>
          <binding protocol="http" bindingInformation="*:8080:localhost" />
        </bindings>
    </site>
<sites>
  • 现在,您可以将图像的src设置为"http://localhost:8080/Media/image.png",浏览器将认为它是一个远程资源(不再抱怨)!
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板