14
04/2016
ASP.NET 的静态文件路径问题
使用Azure WebRole创建了一个网站,其中引用了另外一个项目,而另外一个项目使用了静态文件。
我已经让静态文件copy always。在编译网站的时候,会把此静态文件拷贝到网站的bin目录下。但是在项目读取的时候,却报无法找到此静态文件的错误。
一种办法是使用绝对路径来读取静态文件。但是如何获得绝对路径呢?因为发布到Azure上时,我们是不能直接知道文件是发布到了哪里。
所幸C#提供了一个方法:
HttpContext.Current.Request.PhysicalApplicationPath
但在使用的过程中,却报:nullreferenceexception object reference not set to an instance of an object错误。而且此错误非常不明显,提示信息还不正确。
纠结了许久,原来我是新起一个线程访问了上述代码。只有直接处理用户访问的线程才有HttpContext对象。因此报错。
可以在新起线程外部将HttpContext.Current.Request.PhysicalApplicationPath赋值给一个变量,然后再新起线程内部使用这个变量即可。
转载请注明:康瑞部落 » ASP.NET 的静态文件路径问题
0 条评论