0

我有一个小支付 webApp,我们的客户可以将它安装在他们的 IIS 上并使用它。他们可以上传自己的标识。

我们正在使用 WyBuild 更新此应用程序,但它会将 web 文件夹中的所有文件替换为新版本,因此标识被删除,这就是我们将客户文件放在程序文件中的原因,因此更新程序无法删除它们。

问题是我无法从以下路径加载图像

C:\Program Files\MyApp\ImageFoder\logo.jpg

我不知道该怎么做,而且我几乎可以肯定无法加载

我的网络应用程序已开启

C:\inetpub\wwwroot\MyApp\

我不能在 webFolder 上拥有图像,因为 wyBuild 在我尝试更新它们时会删除它们,我已经尝试过这样的路径:(不起作用)

 ///file:c:/program files/ .... etc

所以,问题是

如何使用 Windows 路径将图像加载到 asp:image 控件?

4

2 回答 2

6

您需要配置 IIS 虚拟文件夹以指向存储图像的备用位置。

不过,我不会将它们放在 Program Files 中,wwwroot 中的同级文件夹会更好。

请记住,NTFS 权限很容易混淆,并且在一个地方管理它们更容易。

更新 - 对于本地安装的仅限本地主机的站点或者(如果您的流量最少,这只是一个好主意。不适用于公共网站),您可以使用 VirtualPathProvider 从任意位置提供文件。听起来这个“网络应用程序”出于某种原因像桌面应用程序一样安装?如果您想在外部存储用户数据,用户的 App Data 文件夹将是合适的,但前提是 Web 应用程序拒绝外部连接,并且只能从机器访问。

由于您正在处理图像,因此我将获取 imageresizing.net库并使用 VirtualFolder 插件来动态提供文件。它在您的项目中增加了 200 KB,但如果您需要,您可以免费获得动态图像大小调整和/或处理,并且您可以节省几天时间来制作 VirtualPathProvider 子类(它们是一场噩梦)。

于 2012-03-29T16:41:08.413 回答
0

使用隔离存储不是更好吗?补充:我的意思是在用户机器上,如果找不到,请重新上传。这完全消除了您的开销。

于 2012-03-29T17:01:31.567 回答