2011-06-07 40 views
12

最近、開発環境をVS2008からVS2010(Ultimate)に移行しました。Visual Studio 2010のビルドエラー - HRESULT例外:0x800300FA(STG_E_ABNORMALAPIEXIT)

6つのプロジェクトを含む1つのソリューション(現在はすべてのC#、.NET Framework 3.5およびASP.NET 2.0用)に対して、VSは問題なく自動アップグレードされました。

ソリューションのプロジェクトは、以下のとおりです。

  1. ASP.NETのWebサイト
  2. 上記サイトのVS2010 Web配置プロジェクト
  3. Webサービスアプリケーション
  4. WSA
  5. 上記のためのVS2010のWeb Deploymentプロジェクトクラスとしょうかん。
  6. 別のクラスライブラリ。我々は1個のエラーを持って構築しかし

、:

私は最終的にASP.NETのWebサイトの設定で一つのエントリにこれを追跡調査した後
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)) 

私はこのラインでビルドする場合

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

ただし、私がコメントアウトして次の行(提供された資格情報なし)でビルドすると、solutiビルドをうまく行ってからweb.configを上記の資格情報を使って修正してください。資格証明はビルドに問題が発生します

<identity impersonate="true"/> 

は今ここに奇妙な問題です - Webサービスアプリケーションが提供された資格情報と罰金のビルド - ビルドエラーがONLY ASP.NETのウェブサイトのために発生します。これは、プロジェクトが個別に構築されているか、ソリューションが再構築されているかにかかわらず、すべて当てはまります。

どのように私は正常に提供された資格情報を使用して構築することができます非常に感謝します。

答えて

12

偽装ユーザーのアクセス許可を確認します。

フラグを偽(<identity impersonate="false"/>)に設定しただけで、それも私にとって生き生きとしています。 はしかし、一度戻ってtrueに設定、それが正常に構築されたが、私はサイトをロードしたとき、私が得た:

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

今、このマシンはドメイン上にあり、そのユーザーが管理者権限を持っているべき、地元であります。私がチェックバックしたとき、それはしなかった。再起動するたびにローカル管理者を再設定するポリシーがあるようです。

+2

私は私のIIS_IUSRSグループに偽装ドメインユーザーを追加し、その一時フォルダへの書き込みアクセス権があります。その後、すべてが順調でした。 – cab0

0

残念ながら、あなたの提案はうまくいきませんでした(「Temporary ASP.NET Files」フォルダのアクセス許可は正しいですが)問題を解決するヒントを提供しました。あなたの答えを読んだ後、私は別の方向に私を導いた次のことを試してみました:

(1)私は正常に(ここでは「別のユーザーが」ローカル管理者である)<impersonate="true"/><identity impersonate="false"/><identity impersonate="true" userName="DOMAIN\different-user" password="password"/>を用いて溶液を3回再構築します。

(2)その後、web.configを元の<identity impersonate="true" userName="DOMAIN\user" password="password"/>に戻し、ASP.NET Webサイトプロジェクトのみを再構築しました。

これは、ソリューションの再構築時にVSが(まだ未知の理由で)クラスライブラリの1つまたはその依存関係を<identity impersonate="true" userName="DOMAIN\user" password="password"/>でASPに構築できないと結論づけました(元のエラーメッセージが強く示唆されています) .NET Webサイトプロジェクト。

問題のクラスライブラリには、サードパーティのコンポーネント、Officeの相互運用性などの参照が多数あります。これは、1つ1つを削除して実際の根本的な理由を発見するのに時間がかかりすぎる可能性があります。

したがって、私は一時的に元のユーザーをローカル管理者に追加するためのハッキング(cringe)を実装しました。私はそこに受け入れられた答えはすでにだが、エラーコードの検索を経由してこのページに来て、誰のために実現

+1

彼らがうまくいかなかった場合、なぜ答えとしてマークされていますか? –

4

....

レビューあなたが偽装しようとしているユーザーの権限。

私の状況では、ステージングサーバーまたは展開サーバーではなく、開発マシンでエラーが発生していました。 (しばらくの間、私の開発環境でconfigから 'identity'ノードを削除し、ポストビルドで行を追加するだけで問題は解決しました。

私の環境では実行時にすべてのWebアプリケーションが偽装する特定のユーザーがいます。ユーザーアカウントを作成しましたが、アカウントのアクセス許可を明示的に設定していませんでした。 (理想的ではないが、私のために働くが、それはユーザアカウントが「本物の」サーバに閉じ込められているので最小限の損害を与える。)

+0

これも助けになりました。 – Narnian

1

「Temporary ASP.NET Filesその内容を削除し、新しいファイルに新しいセキュリティ権限を継承させる必要があります

0

前述の解決策のいずれかがうまくいかず、偽装を使用している場合。 答えは、次のフォルダへのアクセスを偽装しているユーザーのアクセス許可を与えることです:

  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ファイルを引っ張ることができるようにする偽装ユーザー権限を付与するためのもの二つの変更、および任意の必要なファイル

関連する問題