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赋值给一个变量,然后再新起线程内部使用这个变量即可。

0 条评论

    发表评论

    电子邮件地址不会被公开。 必填项已用 * 标注