IIS的网站与虚拟目录造成的错误?
一直以为IIS中的新建网站跟新建虚拟目录没什么区别(主要网站就是可以为它分配主机头)而且在自己所做的所有项目中,都是使用XP,或2000系统服务器,所以对于显示的图像的地址都是使用
Image1.ImageUrl = HttpRuntime.AppDomainAppVirtualPath & "/Imch_Image/register.gif"
这句代码有没有问题?没有
但今天在配置一个网站的时候(win2003服务器)在IIS中新建一个网站,并将主目录引导到应用程序的当前目录当中,发现程序运行的时候有些图像使用不出来,然后查看该图像属性的时候发现它显示的地址是:http://Imch_Image/register.gif 而不是自己设想的结果:http://www.imagechina.net/imch/Imch_Image/register.gif
发现AppDomainAppVirtualPath可能只是针对虚拟目录,对于网站它输出的结果是:“/”,后来没办法,只好调用我当初为了动态载入控件而输出的路径Global.asax:
Public Shared ApplicationPath As String
Sub Application_Start()Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
' 在应用程序启动时激发
If HttpContext.Current.Request.ApplicationPath = "/" Then
ApplicationPath = ""
Else
ApplicationPath = HttpContext.Current.Request.ApplicationPath
End If
End Sub最后将项目的所有HttpRuntime.AppDomainAppVirtualPath 替换成Global.ApplicationPath 就可以显示正常了
另外:我想问一下大家一个问题,由于一些需要,我将一些变量,比如上面的ApplicationPath 字符放在Global.asax,然后为它分配了值(也就是上面的代码),会不会出现丢失的现象??(我不是指Application_End事件),而是项目中运行的时候?我是不太明白了,如果应用程序不结束应该不会不会出现消失,如果结束应用程序又会重新执行Sub Application_Start()
这个事件
