2011-06-07 66 views
12

Gần đây chúng tôi di chuyển môi trường phát triển của chúng tôi từ VS2008 sang VS2010 (Ultimate).Lỗi Visual Studio 2010 Build - Ngoại lệ từ HRESULT: 0x800300FA (STG_E_ABNORMALAPIEXIT))

Đối với một giải pháp (hiện tại tất cả C#, .NET Framework 3.5 và ASP.NET 2.0) chứa 6 dự án VS tự động nâng cấp nó mà không gặp bất kỳ sự cố nào.

Các dự án giải pháp là:

  1. trang web ASP.NET
  2. dự án VS2010 Web Deployment cho trang web trên
  3. Web Services Application
  4. dự án triển khai VS2010 Web cho trên WSA
  5. Một lớp học thư viện.
  6. Thư viện lớp học khác.

Tuy nhiên, khi chúng ta xây dựng chúng tôi có 1 lỗi:

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

Sau khi nghiên cứu cuối cùng tôi theo dõi này với một mục trong trang web ASP.NET cấu hình:

Nếu tôi xây dựng với dòng này vấn đề xảy ra:

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

Tuy nhiên, nếu tôi nhận xét và xây dựng với dòng sau (không có thông tin xác thực được cung cấp) thì soluti xây dựng tốt và sau đó sửa đổi các web.config trở lại ở trên (với các thông tin đăng nhập) các trang web chạy tốt - các thông tin chỉ gây ra một vấn đề cho việc xây dựng.

<identity impersonate="true"/> 

Bây giờ, đây là vấn đề kỳ lạ nhất - Ứng dụng dịch vụ web xây dựng tốt với thông tin được cung cấp - lỗi xây dựng CHỈ xảy ra cho trang web ASP.NET. Điều này tất cả đều đúng nếu các dự án được xây dựng riêng lẻ hoặc giải pháp được xây dựng lại.

Bất kỳ con trỏ nào tôi có thể xây dựng thành công bằng thông tin đăng nhập được cung cấp sẽ được đánh giá rất nhiều.

Trả lời

12

Kiểm tra quyền của người dùng mạo danh.

Sau khi chỉ đặt cờ thành sai, <identity impersonate="false"/>, nó cũng đã được sử dụng cho tôi. Tuy nhiên, khi đặt nó trở lại đúng, nó được xây dựng tốt, nhưng khi tôi nạp trang web, tôi nhận:

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

Bây giờ máy này là trên một tên miền, và người sử dụng đó là địa phương, mà cần phải có quyền quản trị . Khi tôi kiểm tra lại, nó đã không. Có vẻ như có chính sách thiết lập lại các quản trị viên cục bộ mỗi lần khởi động lại.

+2

tôi thêm người dùng miền đang mạo danh vào nhóm IIS_IUSRS của tôi, mà có quyền ghi vào thư mục tạm thời. Sau đó tất cả đều tốt. – cab0

0

Cảm ơn bạn đã trả lời mattdwen - tiếc là đề xuất của bạn không bao giờ làm việc (quyền 'thư mục tệp ASP.NET tạm thời' là chính xác) nhưng đã cung cấp gợi ý dẫn đến tôi (HACK) giải quyết vấn đề.Sau khi đọc câu trả lời của bạn tôi đã cố gắng sau đó dẫn tôi theo một hướng khác:

(1) Tôi thành công xây dựng lại các giải pháp 3 lần sử dụng <impersonate="true"/>, <identity impersonate="false"/><identity impersonate="true" userName="DOMAIN\different-user" password="password"/> (ở đây "khác nhau của người dùng" là một quản trị cục bộ).

(2) Sau đó tôi sửa đổi web.config trở lại thành <identity impersonate="true" userName="DOMAIN\user" password="password"/> ban đầu và CHỈ xây dựng lại dự án trang web ASP.NET - thành công.

Điều này đã dẫn tôi kết luận (thông báo lỗi gốc) rằng VS khi xây dựng lại giải pháp là không thể (vì lý do chưa biết) để xây dựng một trong các thư viện lớp hoặc phụ thuộc của nó với <identity impersonate="true" userName="DOMAIN\user" password="password"/> trong ASP Dự án trang web .NET.

Thư viện lớp được đề cập có một số tham chiếu đến thành phần của bên thứ ba, Nội dung văn phòng, v.v ... sẽ mất quá nhiều thời gian để cố gắng loại bỏ từng cái một và khám phá lý do cơ bản thực sự.

Vì vậy, tôi đã tạm thời triển khai bản hack (cringe) để thêm người dùng ban đầu vào quản trị viên cục bộ.

+1

Nếu họ không bao giờ làm việc, tại sao nó được đánh dấu là câu trả lời? –

4

tôi nhận ra có một câu trả lời đã được chấp nhận, nhưng đối với bất cứ ai khác đến trang này thông qua tìm kiếm trên mã lỗi ....

Xem lại các quyền của người sử dụng mà bạn đang cố gắng để mạo danh.

Trong trường hợp của mình, tôi chỉ gặp lỗi trên máy phát triển của mình, thay vì trên máy chủ dàn dựng hoặc triển khai của chúng tôi. (Đối với một thời gian tôi nhận được xung quanh này bằng cách loại bỏ các nút 'nhận dạng' từ cấu hình trong môi trường dev của tôi và chỉ cần thêm dòng trong xây dựng sau để nó không phải là một vấn đề bất cứ ai khác hơn tôi ..

Trong môi trường của tôi chúng tôi có một người dùng cụ thể mà tất cả các ứng dụng web của chúng tôi mạo danh khi chạy. Tôi đã tạo tài khoản người dùng nhưng chưa đặt rõ ràng quyền tài khoản của mình. Khi tôi thêm người dùng làm Quản trị viên trên máy tính của mình, vấn đề này đã biến mất hoàn toàn. (Không phải lý tưởng, tôi biết, nhưng nó "làm việc cho tôi", và có tác hại tối thiểu kể từ khi tài khoản người dùng đó bị khóa trên máy chủ "thực sự của chúng tôi" ..)

+0

Điều này cũng hữu ích. – Narnian

1

sau khi thay đổi quyền đối với "Tệp ASP.NET tạm thời "bạn cần phải xóa nội dung của nó và cho phép các tệp mới kế thừa các quyền bảo mật mới

0

Nếu bất kỳ giải pháp nào được đề cập trước đây không hoạt động và bạn đang sử dụng mạo danh. Câu trả lời là để cho phép người sử dụng mà bạn đang mạo danh quyền truy cập vào các thư mục sau:

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

  2. thư mục trang web của bạn.

bạn cũng có thể cần phải tạo thư mục như sau:

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

Nhưng thử đầu tiên trước, nó làm việc cho tôi.

Hai thay đổi cấp phép sử dụng mạo danh để có thể lưu dữ liệu tạm thời, và kéo các tập tin dll, và bất kỳ tập tin cần thiết từ các thư mục

Các vấn đề liên quan