C# 如何使用asp.net mvc应用程序读取服务器上的网络路径

C# 如何使用asp.net mvc应用程序读取服务器上的网络路径,c#,asp.net,asp.net-mvc,iis,iis-8,C#,Asp.net,Asp.net Mvc,Iis,Iis 8,我已经在运行.net MVC应用程序的web服务器上设置了一个网络路径,该路径指向另一台用于存储上载文件的服务器。为了允许通过应用程序将文件上载到网络路径,我修改了IIS中的应用程序池,以便应用程序有权上载到它。这一切都很好 为了让应用程序在加载页面时读取文件,我在IIS中创建了一个虚拟目录,它现在显示为IIS中该站点文件系统的一部分。然后,我如何在我的应用程序中访问并生成此位置的路径,以便将该路径传递到DB,然后再将图像加载到页面上 假设我的路径是: 虚拟路径为useruploads/imag

我已经在运行.net MVC应用程序的web服务器上设置了一个网络路径,该路径指向另一台用于存储上载文件的服务器。为了允许通过应用程序将文件上载到网络路径,我修改了IIS中的应用程序池,以便应用程序有权上载到它。这一切都很好


为了让应用程序在加载页面时读取文件,我在IIS中创建了一个虚拟目录,它现在显示为IIS中该站点文件系统的一部分。然后,我如何在我的应用程序中访问并生成此位置的路径,以便将该路径传递到DB,然后再将图像加载到页面上

假设我的路径是:

虚拟路径为useruploads/image.jpg

我如何让我的应用程序识别我创建的虚拟路径

或者取消IIS中的虚拟目录,是否有办法让我的应用程序直接访问web服务器上的网络路径

编辑-要添加到以上内容,我在iis中映射了网络路径,它在iis中的“我的站点”下显示如下:

然后,我想使用~/useruploads/file.jpg这样的地址从asp.net mvc应用程序中的这个目录中读取数据。如果我能让我的应用程序识别这个虚拟目录,那么我就能从中读取

第二辑

好的,我想我已经确定了我的问题的性质,并且更加清楚了。基本上,当我在网页上链接到该文件时,我可以很好地访问该文件。但是,我在chrome中收到消息“不允许加载本地资源”。我相信这只是一个web浏览器不允许我加载图像的问题,因为它在页面上引用了一个本地地址(网络路径)。因此,我现在尝试在应用程序中创建一个操作,以加载带有Url的图像。操作指向我的操作,然后将id转换为图像流,例如

我认为:

<img src="@Url.Action("image", "files", new { image = Model.image})" alt="name" />

因此,最终我的问题是,我无法将图像放在页面上,因为它在服务器上使用了本地地址,而出于安全原因,浏览器中不允许这样做。为了使用网络路径,我必须使用

<img src="@Url.Action("image", "files", new { image = Model.image})" alt="name" />

然后,这会将图像返回到页面,尽管这意味着图像不会被缓存。

“为了让应用程序在加载页面时读取文件,我在IIS中创建了一个虚拟目录,它现在显示为IIS中该站点的文件系统的一部分”-您能解释一下吗;为什么要为文件存储区域创建虚拟目录?从Web HDD或其他服务器HDD读取ASP.net MVC应用程序中的文件时是否遇到问题?Web服务器上的网络路径来自其他服务器,因此其他服务器HDD作为Web服务器上的网络路径。我可以使用地址\\serverIP\useruploads上传到它,但是我似乎无法使用相同的地址路径读取。我需要应用程序识别的路径,因此尝试在iis中为应用程序添加虚拟目录,然后在此处询问我的应用程序是否可以“查看”虚拟目录,例如~/useruploads/file.jpg,以便我可以在应用程序中这样引用它我应该说,当我说“从中读取”时,我的意思是通过应用程序使用该链接将图像加载到html页面上。因此,应用程序调用\\serverIP\useruploads\image.jpg作为db中图像的地址,但这会在chrome中出现“不允许加载本地资源”错误,并且不会在任何其他浏览器中加载。我认为,我真正需要的是将网络路径映射到应用程序可以识别的虚拟地址。添加一个新的VD不是一种方法-您需要能够使用ASP.net MVC应用程序的应用程序池标识用户帐户读取其他服务器的UNC路径。这是一个非常常见的场景-您只需要分配正确的权限。这很公平。我确实有权使用我的应用程序池中设置的帐户读取该文件夹,我必须将其设置为能够上载到该文件夹。现在仔细检查文件夹,我可以看到我使用的帐户对文件夹的读/写等具有完全控制权。因此权限似乎不是问题。
<img src="@Url.Action("image", "files", new { image = Model.image})" alt="name" />
public FileResult image(string id)
    {
        var dir = @"\\SERVERNAME\upload\";
        var path = Path.Combine(dir, id);
        string contentType = MimeMapping.GetMimeMapping(path);

        return base.File(path, contentType);
    }