Không thể tải tệp hoặc lắp ráp hoặc một trong các phụ thuộc của nó. Truy cập bị từ chối. Vấn đề là ngẫu nhiên, nhưng sau khi nó xảy ra một lần, nó vẫn tiếp tục


81

Tôi đã tìm thấy nhiều thông tin về lỗi này: 'LỖI: Không thể tải tệp hoặc lắp ráp' * .dll 'hoặc một trong các phụ thuộc của nó. Truy cập bị từ chối.' Nhưng tôi chưa tìm thấy câu trả lời cụ thể cho kịch bản của mình. Trang web của tôi đang triển khai trên 6 máy chủ sản xuất khác nhau, chỉ trên một máy chủ, tôi đang gặp sự cố này. Vấn đề là ngẫu nhiên, nhưng sau khi nó xảy ra một lần, nó tiếp tục cho đến khi trang web được biên dịch lại bằng cách thực hiện một sửa đổi nhỏ trong tệp web.config (tôi biết mẹo, sau khi sửa đổi trong web.config sẽ biên dịch lại ứng dụng web) và trang web trên máy chủ đó bắt đầu đang làm việc. Hôm qua, số phát hành đã được tái bản sau một tháng hoạt động. Chúng tôi không thể giải quyết vấn đề này trên sản xuất.
Chi tiết vấn đề:

lỗi server trong ứng dụng '/' ____________________________________ Không thể tải tệp hoặc lắp ráp 'MainCore.DbImpl, Phiên bản = 0.0.0.0, Văn hóa = trung lập, PublicKeyToken = null' hoặc một trong các phụ thuộc của nó. Truy cập bị từ chối. Mô tả: Một ngoại lệ chưa được xử lý đã xảy ra trong quá trình thực hiện yêu cầu web hiện tại. Vui lòng xem lại dấu vết ngăn xếp để biết thêm thông tin về lỗi và nguồn gốc của lỗi trong mã.

Chi tiết ngoại lệ: System.IO.FileLoadException: Không thể tải tệp hoặc lắp ráp 'MainCore.DbImpl, Phiên bản = 0.0.0.0, Văn hóa = trung lập, PublicKeyToken = null' hoặc một trong các phụ thuộc của nó. Truy cập bị từ chối.

Lỗi nguồn: Một ngoại lệ chưa được xử lý đã được tạo ra trong quá trình thực thi yêu cầu web hiện tại. Thông tin liên quan đến nguồn gốc và vị trí của ngoại lệ có thể được xác định bằng cách sử dụng dấu vết ngăn xếp ngoại lệ bên dưới.

Assembly Load Trace: Thông tin sau có thể hữu ích để xác định lý do tại sao không thể tải assembly 'MainCore.DbImpl, Version = 0.0.0.0, Culture = trung lập, PublicKeyToken = null'.

WRN: Ghi nhật ký liên kết lắp ráp bị TẮT. Để bật ghi nhật ký lỗi liên kết lắp ráp, hãy đặt giá trị đăng ký [HKLM \ Software \ Microsoft \ Fusion! EnableLog] (DWORD) thành 1. Lưu ý: Có một số hình phạt hiệu suất liên quan đến ghi nhật ký lỗi liên kết lắp ráp. Để tắt tính năng này, hãy xóa giá trị đăng ký [HKLM \ Software \ Microsoft \ Fusion! EnableLog].

Theo dõi ngăn xếp:

[FileLoadException: Không thể tải tệp hoặc lắp ráp 'MainCore.DbImpl, Phiên bản = 0.0.0.0, Văn hóa = trung lập, PublicKeyToken = null' hoặc một trong các phụ thuộc của nó. Quyền truy cập bị từ chối.] ... DbImpl.Event.TTCEventController.GetEventFields (Int32 eventId) +0 WebSuite.SportChannel.ModelImpl.TTCModelController.AddEventFieldList (XmlElement eventNode, ITTCEventChanController ctrl, Int32 eventId, PlayerTypenel ngu) \ ModelImpl \ Ttc \ TTCModelController.cs: 171 ... ModelImpl.TTCModelController.GetLatestFourTourSchedulesXml () trong ... root \ SportChannel \ ModelImpl \ Ttc \ TTCModelController.cs: 283 ... WebRoot.UserControls.Headlines ( , EventArgs e) +491 System.Web.Util.CalliHelper.EventArgFunctionCaller (IntPtr fp, Object o, Object t, EventArgs e) +25 System.Web.Util.
____________________________________

Thông tin phiên bản: Microsoft .NET Framework Phiên bản: 2.0.50727.5446; Phiên bản ASP.NET: 2.0.50727.5420


Sự cố này có phải do tải lên phiên bản dll mới không?
nunespascal

Không có thay đổi, cùng một dll cũ trên tất cả các máy chủ, không có gì thay đổi
khawarPK

Cùng một phiên bản cũ của MainCore.DbImpl.dll trên tất cả các máy chủ, không tải lên hoặc thay đổi bất kỳ điều gì.
khawarPK

Thử dọn dẹp / xóa các tệp ASP.Net Tạm thời vào lần tiếp theo điều này xảy ra, bcoz để làm sạch chúng, bạn có thể cần khởi động lại IIS.
Furqan Hameedi

Làm thế nào để tôi tránh xảy ra sự cố này vào lần tới trên máy chủ này ??
khawarPK

Câu trả lời:


51

Đối với tình huống của tôi, tôi thấy rằng có một nút nhận dạng trong tệp web.config.

<identity impersonate="true" userName="blah" password="blah">

Khi tôi xóa các tham số userName và password khỏi nút, nó bắt đầu hoạt động.

Một tùy chọn khác có thể là bạn cần đảm bảo rằng userName được chỉ định có quyền truy cập để làm việc với các thư mục "Tệp ASP.NET Tạm thời" được tìm thấy trong các thư mục C: \ Windows \ Microsoft.NET \ Framework {version} khác nhau.

Hy vọng điều này sẽ giúp người khác ra ngoài!


2
Đối với tôi, chạy cục bộ giải pháp có nghĩa là xóa hoàn toàn nút nhận dạng khỏi web.config, nhưng việc triển khai nó đến các máy chủ sản xuất yêu cầu mạo danh và do đó nút nhận dạng phải được thêm vào. Xem câu trả lời của tôi ở đây để biết thêm chi tiết
bkwdesign

3
Tôi đã thêm người dùng mạo danh vào nhóm cục bộ có tên IIS_IUSRS, thay vì cố gắng tìm ra chính xác cái nào trong số "các thư mục khuôn khổ khác nhau" để sử dụng.
Andreas Jansson

Đừng quên rằng việc mạo danh có thể được thực hiện thông qua (không có web.config), trong trường hợp của tôi, người dùng (đăng nhập ẩn danh) đã được lưu trong trình duyệt Chrome. Phải khởi động lại Chrome và truy cập lại trang web để nhập thông tin đăng nhập người dùng của tôi.
Volodymyr Kotylo

36

Gặp sự cố tương tự, đã được khắc phục khi đặt thông số "Bật ứng dụng 32-bit" thành "true" (trong cài đặt nâng cao của nhóm ứng dụng iis).


Câu trả lời này cùng với giải pháp của Love Chopra đã hiệu quả với tôi.
Trường hợp 303

Câu trả lời chính xác! Nếu, giống như tôi, bạn đang cố xuất bản lên Azure và gặp lỗi tương tự, Hãy chuyển đến ứng dụng của bạn trên cổng Azure, Đi tới Cài đặt ứng dụng và Chọn tùy chọn "64-bit" cho cài đặt "Nền tảng".
MV23

@ MV23 Tại sao lại là 64-bit? Tại sao điều đó lại giúp ích?
nmit026,

26

Giải pháp của tôi như sau:

Tôi không tìm thấy thư mục gốc trong C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files.

Google nói với tôi rằng đó có thể là vấn đề về quyền đối với người dùng hiện tại, sau đó tôi nhận thấy rằng tôi có Danh tính hiện tại: IIS APPPOOLtrong máy chủ bị trục trặc nơi phần còn lại của máy chủ có Danh tính hiện tại:NT AUTHORITY\NETWORK SERVICE .

Sau đó, tôi đã thay đổi Danh tính Hiện tại từ IIS APPPOOLthànhNT AUTHORITY\NETWORK SERVICE .

Từ đây, tôi thấy rằng việc đặt lại ứng dụng web sẽ xây dựng lại bộ nhớ cache ASP.NET tạm thời, giải quyết được sự cố.


Bất kỳ giải pháp nào cho vấn đề tương tự với C1.Web.Wijmo.Controls.4 lắp ráp? nhậnCould not load file or assembly 'C1.Web.Wijmo.Controls.4, Version=4.0.20163.250, Culture=neutral, PublicKeyToken=9b75583953471eea' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
Prajwal Bhat

@Bhat: Của bạn là một vấn đề hoàn toàn khác. Chỉ cần so sánh các thông báo lỗi.
JensG

22

Cho bất kỳ ai khác đã thử hầu hết các giải pháp mà vẫn gặp sự cố.

Giải pháp của tôi khác với những giải pháp khác, nằm ở cuối bài đăng này, nhưng trước khi thử, hãy đảm bảo rằng bạn đã sử dụng hết các danh sách sau. Để chắc chắn, tôi đã thử tất cả chúng nhưng không có kết quả.

  1. Biên dịch lại và triển khai lại từ đầu, không cập nhật ứng dụng hiện có. Vì vậy câu trả lời

  2. Cấp cho IIS_IUSRS toàn quyền truy cập vào thư mục "C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET Files"

    Hãy ghi nhớ phiên bản khung mà bạn đang sử dụng. Nếu ứng dụng của bạn đang sử dụng tính năng mạo danh, hãy sử dụng danh tính đó thay vì IIS_IUSRS

  3. Xóa tất cả nội dung của thư mục "C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET Files" .

    Hãy ghi nhớ phiên bản khung mà bạn đang sử dụng

  4. Thay đổi danh tính của AppPool mà ứng dụng của bạn đang sử dụng, từ ApplicationatonPoolIdentity thành NetworkService.

    IIS> Bể ứng dụng> Chọn nhóm ứng dụng hiện tại> Cài đặt nâng cao> Nhận dạng.

    SO Trả lời (vui lòng khôi phục về mặc định nếu nó không hoạt động)

  5. Xác minh phiên bản IIS và khả năng tương thích của phiên bản AppPool .NET với ứng dụng của bạn. Có thể áp dụng cao cho những lần triển khai đầu tiên. Vì vậy câu trả lời

  6. Xác minh cấu hình mạo danh nếu có. Vì vậy câu trả lời

Giải pháp của tôi:

Tôi phát hiện ra rằng một số phần mềm chống vi-rút đang tích cực chặn việc biên dịch các tệp DLL trong thư mục "Tệp ASP.NET Tạm thời" , của tôi là McAfee, nhân viên CNTT đã không thông báo cho tôi về việc cài đặt.

Theo lời khuyên của cả các chuyên gia McAfee và Microsoft, bạn cần loại trừ thư mục "Tệp ASP.NET Tạm thời" trong quá trình quét thời gian thực.

Nguồn:

Đừng tắt Anti-Virus vì nó chỉ làm nhiệm vụ của mình. Không sao chép thủ công các tệp DLL bị thiếu trong thư mục \ Tệp ASP.NET Tạm thời {tên dự án} vì điều đó ảnh hưởng đến việc đóng băng.


Xóa các tệp ASP.Net tạm thời đã làm việc cho tôi mặc dù lỗi chỉ tham chiếu (lặp đi lặp lại) thùng cục bộ của tôi. Rất bối rối.
dudeNumber 4

1
Cảm ơn bạn rất nhiều ... Tôi đã chiến đấu chống lại lỗi khó chịu này trong gần hai tuần. Khi tôi tắt phần mềm chống vi-rút của mình (BitDefender Free Antivirus), mọi thứ hoạt động tốt trở lại.
Alexandre Perez

1
cứ khoảng 6 tháng một lần, tôi có một đợt triển khai nhà phát triển hoạt động sai khiến tôi phải trả lại câu trả lời SO này - viết thư tuyệt vời @Yorro !. Một lần nữa, mặc dù thực sự kết thúc là người dùng mạo danh của tôi cần quyền truy cập vào dir Tệp ASP.NET Tạm thời, tôi dường như không gặp lỗi cho đến khi tôi xóa ứng dụng của mình khỏi IIS (không phải các tệp cơ bản) và thêm lại ứng dụng trở lại IIS.
bkwdesign

Trong trường hợp của tôi, tôi phát hiện ra McAfee đang chặn quyền truy cập vào các tập tin ứng dụng .Net của tôi như được thấy trong nhật ký của McAfee. Tôi đã phải vào "Bảo vệ truy cập" của McAfee và thay đổi "Bảo vệ tối đa chống phần mềm gián điệp". Sau đó, bỏ kiểm tra Chặn cho mục có tên "Ngăn chặn tất cả các chương trình chạy tệp từ thư mục Temp". Điều này có thể được cấu hình thay vì vô hiệu hóa, điều này tốt hơn. Tìm trong AccessProctectionLog.txt để xem các thông báo nếu nó đang chặn hoặc đang báo cáo. Vị trí của nhật ký nằm trên trang tab Báo cáo.
Paul Syfrett

Tôi gặp lỗi khi sử dụng IIS Expresss trong development environment. Vấn đề tương tự về AppPools .
Kiquenet

5

Nếu bạn đang sử dụng tính năng mạo danh, hãy đảm bảo cấp quyền, bao gồm quyền ghisửa đổi đối với tài khoản người dùng có liên quan trên thư mục sau:

C:\Users\[username]\AppData\Local\Temp\Temporary ASP.NET Files

Tôi đã thiếu quyền sửa đổi, đó là lý do tại sao chỉ thêm các quyền mặc định không hoạt động với tôi.


Tôi chỉ làm theo các bước này, thay vì những bước phức tạp hơn trong câu trả lời đã chọn - và chỉ điều này đã giải quyết được nó.
Veverke

Điều này cũng làm việc cho tôi. Tôi đã sử dụng Trình theo dõi quy trình của Sysinternal từ Technet để tìm thư mục bị chặn, đó là thư mục "Tệp ASP.NET Tạm thời" được đề cập. Trong Process Monitor, bạn tắt mọi thứ ngoại trừ nút "File System Activity" và sau đó có thể tìm kiếm "ACCESS DENIED".
Fordy

4

Nếu bạn vẫn gặp sự cố, hãy thử cách này:

Mở Trình quản lý IIS của bạn -> Vùng chứa ứng dụng -> chọn nhóm ứng dụng của bạn -> Cài đặt nâng cao -> Trong 'Mô hình quy trình', đặt cài đặt 'Tải hồ sơ người dùng' là Đúng

nhập mô tả hình ảnh ở đây


Câu trả lời này cùng với giải pháp của Fragment đã làm việc cho tôi.
Trường hợp 303

4

Tôi tin rằng tôi đã lãng phí 1 ngày để nghiên cứu nó và đây là những gì tôi đã tìm ra.

Bạn cần thêm người dùng Mạo danh vào thư mục Gỡ lỗi của Giải pháp của bạn vì Khung sẽ cố gắng truy cập DLL từ vị trí này và đặt nó trong Thư mục Asp.Net Tạm thời.

Vì vậy, về cơ bản hãy làm theo 2 bước sau

  1. Cấp quyền cho Thư mục Asp.Net Tạm thời bên dưới C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Filesvà đảm bảo rằng người dùng bạn đang thêm ở đây giống như người dùng bạn đang sử dụng khi Mạo danh.

  2. Thêm người dùng Mạo danh vào thư mục Gỡ lỗi của Giải pháp YourSolutionPath .. \ bin \ Debug

Điều này sẽ hoạt động


3

Tôi gặp sự cố tương tự, đã được khắc phục bằng cách xây dựng lại và triển khai lại TẤT CẢ các tệp Dll của Người phụ thuộc


3

Trong trường hợp của tôi, đó là do tính năng Bảo vệ quyền truy cập của chương trình chống vi-rút của tôi (McAfee). Rõ ràng là nó đã chặn quyền truy cập vào tệp này, do lỗi như vậy.

Tôi đã vô hiệu hóa nó và giải pháp vẫn chạy. Bạn có thể muốn kiểm tra bất kỳ ứng dụng tiện ích nào bạn đang chạy có thể ảnh hưởng đến quyền truy cập vào một số tệp.


Tôi đã phải vào "Bảo vệ truy cập" của McAfee và thay đổi "Bảo vệ tối đa chống phần mềm gián điệp". Sau đó, bỏ kiểm tra Chặn cho mục có tên "Ngăn chặn tất cả các chương trình chạy tệp từ thư mục Temp". Điều này có thể được định cấu hình thay vì bị vô hiệu hóa sẽ tốt hơn.
Paul Syfrett

3

Đi tới IIS -> Nhóm ứng dụng -> Cài đặt nâng cao -> Bật ứng dụng 32-bit


Bạn đẹp !! Đã lưu cho tôi một worldddd về các vấn đề
Murphybro2

2

Kiểm tra cài đặt IIS. Tôi sử dụng IIS 7.5 với biên dịch 32 hoặc 64 bit trong khuôn khổ .NET. Nếu bạn có ứng dụng sử dụng chế độ 32 bit, hãy đảm bảo bật Nhóm ứng dụng để có thể sử dụng hướng dẫn 32 bit. Nếu không, dường như không có gì hoạt động cho dù bạn đặt bảo mật hay ký hiệu mạnh mẽ cho DLL.


2

Tôi đang thiết lập môi trường trên máy chủ mới. Web.config của tôi có nút nhận dạng như bên dưới. Khi tôi gặp phải "Không thể tải tệp hoặc lắp ráp hoặc một trong các phụ thuộc của nó. Quyền truy cập bị từ chối. Vấn đề là ngẫu nhiên, nhưng sau khi nó xảy ra một lần, nó vẫn tiếp tục"

Đã thêm ccs \ HJKWeb làm danh sách người dùng của máy chủ mới của tôi.

  <authentication mode="Windows" />
        <identity impersonate="true" password="******" userName="ccs\HJKWeb" />

2

Đối với tôi, vụ hack sau đây đã hoạt động; Đi tới IIS -> Vùng chứa ứng dụng -> Cài đặt nâng cao -> Mô hình quy trình -> Danh tính được thay đổi từ Tài khoản tích hợp (ApplicationPoolIdentity) thành Tài khoản tùy chỉnh (Người dùng miền của tôi)


1

Tôi đã không sử dụng mạo danh trong trường hợp của mình. Giải pháp của tôi là cấp quyền truy cập đầy đủ vào thư mục dự án của tôi cho nhóm người dùng "IIS_IUSRS".


1
 Go to run  : ctrl + R
 Type : %temp%

xóa tất cả các tệp và thư mục

 Rebuild Project.
 done!

1

Tôi gặp sự cố này và hóa ra là một gói / lắp ráp được tham chiếu đang được mã hóa bởi Windows. Điều này xảy ra do công ty của tôi đã triển khai chính sách yêu cầu mã hóa thư mục Tài liệu của tôi và các giải pháp Visual Studio của tôi tình cờ nằm ​​trong thư mục đó.

Tôi có thể truy cập thủ công thuộc tính tệp / thư mục trong Windows Explorer và tắt mã hóa. Nhưng trong trường hợp của tôi, đây là một giải pháp tạm thời vì chính sách mạng cuối cùng sẽ thay đổi nó trở lại. Tôi buộc phải di chuyển giải pháp VS của mình đến một vị trí không được mã hóa khác.


1

Trong trường hợp của tôi, tôi đã sao chép một dịch vụ từ máy chủ này sang máy chủ khác mà không thực hiện triển khai đúng cách từ Visual Studio. Câu chuyện dài.

Dù sao, tôi đã thiết lập tất cả các quyền NTFS thích hợp và không có gì, nhưng nó vẫn không thể tải DLL chính cho dịch vụ.

Tôi đã sửa nó bằng cách đổi tên tệp service.pdb tương ứng thành một thứ khác.

Ví dụ đây là thư mục bin của tôi: \bin\ service.dll service.dll.config service.pdb Tôi đã đổi tên service.pdb thành zzservice.pdb, và sau đó service.dll tải tốt.


Nó có thể đã khắc phục được sự cố của bạn nhưng nó không giải thích được nguyên nhân
cuộn vào

1

Nếu bạn không thể tìm thấy DLL thay vì quyền truy cập bị từ chối, hãy đảm bảo rằng bạn đã cài đặt VC ++ Redistributable thích hợp.


0

Tôi gặp lỗi này khi chạy từ VS. Hóa ra tôi đã mở một giải pháp mà không cần chạy Visual Studio với tư cách quản trị viên. Đóng Visual studio xuống và chạy lại với tư cách là quản trị viên sau đó xây dựng lại giải quyết vấn đề này cho tôi.

Hy vọng rằng sẽ giúp một ai đó.


0

Trong trường hợp của tôi, tôi đang sử dụng tính năng mạo danh đơn giản và người dùng mạo danh đã gặp sự cố khi truy cập một trong các tổ hợp dự án. Giải pháp của tôi:

  1. Tìm kiếm thông báo của ngoại lệ bên trong để xác định cụm có vấn đề.
  2. Sửa đổi các thuộc tính bảo mật của tệp hợp ngữ.

    a) Thêm tài khoản người dùng bạn đang sử dụng để mạo danh vào Nhóm và tên người dùng.

    b) Cấp cho tài khoản người dùng đó toàn quyền truy cập vào tệp lắp ráp.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.