如何使用Windows路径</asp:image>将图片加载到<asp:image>

时间:2012-03-29 16:37:21

标签: c# asp.net .net wybuild

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

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

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

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

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

我的网络应用程序已开启

C:\inetpub\wwwroot\MyApp\

我无法在webFolder上显示图像,因为wyBuild会在我尝试更新它们时删除它们,我已经尝试过这样的路径:(不行)

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

所以,问题是

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

2 个答案:

答案 0 :(得分:6)

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

我不会把它们放在Program Files中,但是wwwroot中的兄弟文件夹会更好。

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

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

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

答案 1 :(得分:0)

使用隔离存储不是更好吗? 补充:我的意思是在用户计算机上,如果找不到它们,则再次上传它们。这会完全消除您的开销。