架设部署网站因权限不足而出错Could not load file or assembly

亮术网 2020-09-20 本网原创

在架设部署网站的时候,常常会出现这样那样的错误,有一些错误是因权限不足而导致的。别看这些错误简单不起眼,却常常因隐蔽而难于发现。

就拿 IIS_W3C(IIS7 为 IIS_IUSRS) 无权访问 bin 目录下的 dll 文件来说。网站已经上传到服务器,在架设过程中发现程序有错误,修改好后把有错的 dll 文件上传到服务器并复制到 bin 目录下,此时由于上传的 dll 文件 IIS_W3C 无权限访问,所以就抛出错误。这个错误十分隐蔽,原本 bin 目录下所有 dll 文件,IIS_W3C 都有访问权限,谁又会想到重新上传复制过去的 dll 文件会因权限不足而出错。

 

一、IIS_W3C(IIS7 为 IIS_IUSRS) 无权访问 bin 目录下的 dll 文件会出现如下错误:

Exception: System.IO.FileLoadException

Message: Could not load file or assembly 'System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. 拒绝访问。

抛出异常为文件载入异常,具体是不能载入 System.Web 或 System.Web 的依赖项。

 

有时还会同时出现下面一错误:

Failed to execute request because the App-Domain could not be created. Error: 0x80070005 拒绝访问。

意思是:不能创建 App-Domain,所以执行请求失败。

 

 

二、解决方法(架设部署网站因权限不足而出错)

只要把 IIS_W3C(或 IIS_IUSRS)无权访问的 dll 文件(通常是新上传的 dll),分配给 IIS_W3C 读取权限,问题就会获得解决。

还有一种情况,当打开一个 html 页或动态 aspx 页时,提示无权限访问,通常是匿名访问网站的用户(默认是以IUSR_开头的用户)没有读取这个页的权限。