Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Visual Studio 2010 Build Error - Exception from HRESULT: 0x800300FA (STG_E_ABNORMALAPIEXIT))

Recently we migrated our development environment from VS2008 to VS2010 (Ultimate).

For one solution (for now all C#, .NET Framework 3.5 and ASP.NET 2.0) which contains 6 projects VS auto-upgraded it without any problems.

The solution projects are:

  1. ASP.NET website
  2. VS2010 Web Deployment project for above site
  3. Web Services Application
  4. VS2010 Web Deployment project for above WSA
  5. A class library.
  6. Another class library.

However, when we build we have 1 error:

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))

After research I finally tracked this to one entry in the ASP.NET website config:

If I build with this line the problem occurs:

<identity impersonate="true" userName="DOMAIN\user" password="password"/>

However, if I comment out and build with the following line (without the supplied credentials) the solution builds fine AND then amend the web.config back to the above (with the credentials) the site runs fine - the credentials only cause a problem for the build.

<identity impersonate="true"/>

Now here is the strangest issue - the Web Services Application builds fine with the supplied credentials - the build error ONLY occurs for the ASP.NET website. This all holds true whether the projects are built individually or the solution rebuilt.

Any pointers how I can successfully build with the supplied credentials will be greatly appreciated.

like image 970
Barry Kaye Avatar asked Jun 07 '11 09:06

Barry Kaye


3 Answers

Check the permissions of the impersonation user.

After just setting the flag to false, <identity impersonate="false"/>, it also came to life for me. However, once setting it back to true, it built fine, but when I loaded the site, I got:

The current identity (XN-DTDEV\Fusion) does not have write access to 'C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files'.

Now this machine is on a domain, and that user is local, which should have administrative privileges. When I checked back, it didn't. It looks like there is a policy re-setting the local administrators each reboot.

like image 149
mattdwen Avatar answered Sep 19 '22 19:09

mattdwen


I realize there's already an accepted answer, but for anyone else coming to this page via a search on the error code....

Review the permissions of the user that you're trying to impersonate.

In my situation, I was only getting the error on my development machine, rather then on our staging or deployment servers. (For a while I got around this by removing the 'identity' node from config in my dev environment and just adding the line in post-build so it wasn't a problem anyone other than me..

In my environment we have a specific user that all our web apps impersonate when running. I had created the user account, but hadn't explicitly set its account permissions. When I added the user as an Adminstrator on my dev machine, this problem went away completely. (Not ideal, I know, but it "works for me", and has minimal harm since that user account is locked down on our 'real' servers anyways..)

like image 39
Peter Bernier Avatar answered Sep 18 '22 19:09

Peter Bernier


after changing permissions on "Temporary ASP.NET Files" you need to delete its contents and allow the new files to inherit the new security permissions

like image 27
Jack Avatar answered Sep 21 '22 19:09

Jack