2011-06-07 264 views
12

最近我們將我們的開發環境從VS2008遷移到VS2010(Ultimate)。Visual Studio 2010構建錯誤 - 來自HRESULT的異常:0x800300FA(STG_E_ABNORMALAPIEXIT))

對於包含6個項目VS自動升級沒有任何問題的一個解決方案(現在所有的C#,.NET Framework 3.5和ASP.NET 2.0)。

解決方案的項目有:

  1. ASP.NET網站
  2. VS2010 Web部署項目爲上述網站
  3. Web服務應用程序
  4. VS2010 Web部署項目上面WSA
  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網站配置跟蹤這一項內容:

如果我建立這條線發生此問題:

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

但是,如果我註釋掉並使用下面的行(不提供憑據)構建與soluti在生成良好,然後修改web.config回到上面(與憑據)該網站運行良好 - 憑據只會導致構建的問題。

<identity impersonate="true"/> 

現在,這裏是最奇怪的問題 - Web服務應用程序建立罰款所提供的憑證 - 生成錯誤只發生在ASP.NET網站。無論項目是單獨構建的還是解決方案的重建都是如此。

任何指針如何使用提供的憑據成功構建將不勝感激。

回答

12

檢查模擬用戶的權限。

將標誌設置爲false後,<identity impersonate="false"/>,它也爲我而生。 然而,一旦設置回真實的,它建立了良好的,但是當我裝了現場,我得到:

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組,目錄這兩個變化授予模擬用戶許可的情況下能夠保存溫度數據,並拉動的dll文件,和任何需要的文件,這具有對臨時文件夾的寫入權限。然後一切都很好。 – cab0 2012-07-26 18:05:11

0

感謝您的回覆mattdwen - 不幸的是您的建議從未奏效('Temporary ASP.NET Files'文件夾權限是正確的),但確實提供了導致我(HACK)解決問題的提示。讀你的答案後,我試圖害得我在不同的方向如下:

(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網站項目 - 成功。

這導致我得出結論(強烈暗示原始錯誤消息)VS在重建解決方案時無法(因爲未知原因)在ASP中使用<identity impersonate="true" userName="DOMAIN\user" password="password"/>構建其中一個類庫或其依賴關係.NET網站項目。

有問題的類庫有許多第三方組件,Office interops等的引用,這些引用對於試圖逐個消除並發現真正的潛在原因而言現在太費時。

因此,我暫時實施了黑客(注意)將原始用戶添加到本地管理員。

+1

如果他們從來沒有工作過,爲什麼它被標記爲答案? – 2013-06-24 15:22:53

4

我知道已經有一個公認的答案,但對於其他人通過錯誤代碼搜索來到這個頁面....

評論的用戶,你試圖模仿的權限。

在我的情況下,我只在我的開發機器上得到錯誤,而不是在我們的登臺或部署服務器上。 (有一段時間,我通過從我的開發環境中刪除配置中的「身份」節點,並在後期構建中添加該行,以便除了我之外沒有其他人遇到此問題。

在我的環境中我們有一個特定的用戶,我們的所有網絡應用程序在運行時都會模仿,我創建了用戶帳戶,但沒有明確設置其帳戶權限,當我在開發機器上將用戶添加爲Adminstrator時,此問題完全消失。 (不太理想,我知道,但它「適用於我」,並且因爲該用戶帳戶被鎖定在我們的「真實」服務器上,所以受到的傷害最小..)

+0

這也有幫助。 – Narnian 2012-06-29 12:34:34

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] 

但是嘗試前面第一,它爲我工作。

相關問題