Visual Studio 2010生成错误 – 来自HRESULT的exception:0x800300FA(STG_E_ABNORMALAPIEXIT))

最近我们将开发环境从VS2008迁移到了VS2010(Ultimate)。

对于包含6个项目的一个解决方案(现在所有C#,.NET Framework 3.5和ASP.NET 2.0),VS自动升级它没有任何问题。

解决方案项目是:

  1. ASP.NET网站
  2. 针对上述站点的VS2010 Web部署项目
  3. Web服务应用程序
  4. 针对上述WSA的VS2010 Web部署项目
  5. 一个类库。
  6. 另一个类库。

但是,当我们构建时,我们有1个错误:

Could not load file or assembly 'ClassLibrary1BLL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. An API call exited abnormally. (Exception from HRESULT: 0x800300FA (STG_E_ABNORMALAPIEXIT)) 

经过研究,我终于在ASP.NET网站配置中找到了一个条目:

如果我使用此行构建,则会出现问题:

  

但是,如果我注释掉并使用以下行构建(没有提供的凭据),解决方案构建正常,然后将web.config修改回上面(使用凭据)网站运行良好 – 凭据只会导致问题构建

  

现在,这是最奇怪的问题 – 使用提供的凭据构建Web服务应用程序 – 只有ASP.NET网站才会出现构建错误。 无论项目是单独构建还是重建解决方案,这都是正确的。

任何指示我如何使用提供的凭据成功构建将非常感激。

检查模拟用户的权限。

在将标志设置为false, ,它也为我而生。 但是,一旦将其设置为true,它就构建得很好,但是当我加载网站时,我得到了:

当前标识(XN-DTDEV \ Fusion)没有对“C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ASP.NET Files”的写入权限。

现在这台机器在一个域上,该用户是本地用户,应​​具有管理权限。 当我回来时,它没有。 看起来每个重启都会重新设置本地管理员的策略。

我意识到已经有一个已接受的答案,但对于通过搜索错误代码来到此页面的任何其他人….

查看您尝试模拟的用户的权限。

在我的情况下,我只是在我的开发机器上得到错误,而不是在我们的暂存或部署服务器上。 (有一段时间我通过在我的开发环境中从配置中删除’identity’节点并在后期构建中添加该行来解决这个问题,所以除了我之外没有其他问题。

在我的环境中,我们有一个特定的用户,我们的所有Web应用程序在运行时都会模拟。 我创建了用户帐户,但没有明确设置其帐户权限。 当我在我的开发机器上将用户添加为管理员时,这个问题就完全消失了。 (不太理想,我知道,但它“对我有用”,并且因为用户帐户被锁定在我们的“真实”服务器上而受到的伤害很小..)

更改“临时ASP.NET文件”的权限后,您需要删除其内容并允许新文件inheritance新的安全权限

感谢回复mattdwen – 遗憾的是你的建议从未奏效(’临时ASP.NET文件’文件夹权限是正确的),但确实提供了导致我(HACK)解决问题的提示。 在阅读完答案后,我尝试了下面的内容,这使我走向了另一个方向:

(1)我使用成功重建了解决方案3次 (这里”不同用户“是本地管理员)。

(2)然后我将web.config修改回原来的并且只重建了ASP.NET网站项目 – 成功。

这使我得出结论(在原始错误消息中强烈暗示)VS在重建解决方案时无法(因为尚未知的原因)使用构建其中一个类库或其依赖项ASP.NET网站项目中的

有问题的类库有许多对第三方组件,Office互操作等的引用,现在试图逐个消除并发现真正的潜在原因太费时间了。

因此,我暂时实施了hack(cringe)将原始用户添加到本地管理员。

如果之前提到的任何解决方案都不起作用,并且您正在使用模拟。 答案是为用户授予您模仿以下文件夹的权限:

  1. C:\Windows\Microsoft.NET\Framework[v4.0.30319 or the version that you're using]\Temporary ASP.NET Files

  2. 您的站点目录。

您也可能需要按以下方式创建文件夹:

 C:\Windows\Microsoft.NET\Framework\[v4.0.30319 or the version that you're using]\Temporary ASP.NET Files\[Application-Name-Goes-Here] 

但尝试前面的第一次,它对我有用。

这两个更改用于授予模拟用户权限以便能够保存临时数据,并从目录中提取dll文件和任何所需文件