搜索

首页  >  问答  >  正文

通过伪装远程位置获取本地文件

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

全部回复(2)我来回复

  • P粉821808309

    P粉8218083092023-09-01 14:46:53

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

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

    回复
    0
  • P粉494151941

    P粉4941519412023-09-01 14:01:57

    好的,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",浏览器将认为它是一个远程资源(不再抱怨)!

    回复
    0
  • 取消回复