Lỗi Microsoft.Web.Infra Structure, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35


92

Tôi có một ứng dụng web nhỏ. Nó hoạt động tốt cho đến khi tôi thêm hai genericHandler trong ứng dụng của mình.

Tôi đã thực hiện các thay đổi sau đây cho trình xử lý http

 <system.web>
    <authentication mode="Forms" >
        <forms protection="All" timeout="720" defaultUrl="Default.aspx" loginUrl="Login.aspx" >
        </forms>
    </authentication>
    <authorization>
        <deny users="?"/>
    </authorization>
    <compilation debug="true" targetFramework="4.0" />

    <httpHandlers>
        <!--Code Log Handler-->
        <add verb="*" path="*.aspx" type="System.Web.UI.PageHandlerFactory" />
        <add verb="*" type="InfoDomeNewUI.Handler.SendOWA" path="SendOWA.ashx" />
        <add verb="*" type="InfoDomeNewUI.Handler.SendSOS" path="SendSOS.ashx" />
    </httpHandlers>
    <customErrors mode="Off">
        <error statusCode="404" redirect="Templates/PageNotFound.html" />
    </customErrors>
</system.web>
<system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <handlers>
        <!--Code Log Handler-->
        <add name="LogHandler1" path="SendOWA.ashx" verb="*" type="InfoDomeNewUI.Handler.SendOWA"/>
        <!-- SMS SENDER-->
        <add name="SendSOS" path="SendSOS.ashx" verb="*" type="InfoDomeNewUI.Handler.SendSOS"/>
    </handlers>
</system.webServer>

Could not load file or assembly 'Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.

Tôi đang sử dụng asp.net4.0 và C #. Tôi không sử dụng MVC
Trên máy chủ cục bộ, nó đang hoạt động tốt.
Nhưng khi tôi đang lưu trữ mã đã xuất bản, nó đang cho tôi lỗi ở trên.

Dấu vết ngăn xếp: -

[FileNotFoundException: Không thể tải tệp hoặc lắp ráp 'Microsoft.Web.Infra Structure, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' hoặc một trong các phụ thuộc của nó. Hệ thống không thể tìm thấy tệp được chỉ định.] System.Web.Http.WebHost.SuppressFormsAuthRedirectModule.Register () +0

[InvalidOperationException: Phương thức khởi tạo trước ứng dụng Bắt đầu trên loại System.Web.Http.WebHost.PreApplicationStartCode đã đưa ra một ngoại lệ với thông báo lỗi sau: Không thể tải tệp hoặc lắp ráp 'Microsoft.Web.Infra Structure, Version = 1.0.0.0, Văn hóa = trung lập, PublicKeyToken = 31bf3856ad364e35 'hoặc một trong những phụ thuộc của nó. Hệ thống không thể tìm thấy tệp được chỉ định ..] System.Web.Compilation.BuildManager.InvokePreStartInitMethods (ICollection`1 phương thức) +11708830 System.Web.Compilation.BuildManager.CallPreStartInitMethods () +465 System.Web.Hosting.Hosting ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnMTParameters hostingParameters, PolicyLevel policyLeve

[HttpException (0x80004005): Phương thức khởi tạo bắt đầu ứng dụng trước Bắt đầu trên loại System.Web.Http.WebHost.PreApplicationStartCode đã đưa ra một ngoại lệ với thông báo lỗi sau: Không thể tải tệp hoặc lắp ráp 'Microsoft.Web.Infraectors, Version = 1.0 .0.0, Văn hóa = trung lập, PublicKeyToken = 31bf3856ad364e35 'hoặc một trong các phụ thuộc của nó. Hệ thống không thể tìm thấy tệp được chỉ định ..] System.Web.HttpRuntime.FirstRequestInit (ngữ cảnh HttpContext) +11697760 System.Web.HttpRuntime.EnsureFirstRequestInit (ngữ cảnh HttpContext) +141 System.Web.HttpRuntime.ProcessPrxtvateerNotification wrivate context, II +4866485


1
Cài đặt Microsoft.Web.Infraosystem.dll từ gói nuget, đã hiệu quả với tôi.
— ATUL SHARMA

Câu trả lời:


197

Có vẻ như Microsoft.Web.Infraosystem.dll không được cài đặt trong GAC, ngay cả khi .net (4.0 hoặc 4.5 hoặc khác) được cài đặt thành công trên Windows Server. Trên localhost (thường là máy khách Windows), có vẻ như nó đang ở trong GAC khi các công cụ / nền tảng (Visual Studio, v.v.) được cài đặt.

Để có thể khắc phục, vui lòng thử những cách sau:

  1. Chạy lệnh sau trong Bảng điều khiển Trình quản lý Gói. (Nếu bạn đang sử dụng Visual Studio, bạn có thể truy cập điều này thông qua tùy chọn menu "Công cụ -> Trình quản lý gói thư viện -> Bảng điều khiển trình quản lý gói :)

    PM> Install-Package Microsoft.Web.Infrastructure

    Bạn sẽ thấy các thông báo sau nếu nó được cài đặt thành công.

    Successfully installed 'Microsoft.Web.Infrastructure 1.0.0.0'.
    Successfully added 'Microsoft.Web.Infrastructure 1.0.0.0' to Web.
  2. Bạn sẽ nhận thấy rằng Microsoft.Web.Infraosystem.dll hiện đã được thêm vào dưới dạng Tham chiếu (có thể được xem trong thư mục tham chiếu của dự án của bạn trong Solution Explorer)

  3. Nếu bạn nhìn vào các thuộc tính của tham chiếu này, bạn sẽ nhận thấy rằng " Copy Local " đã được đặt thành " True " theo mặc định.

  4. Bây giờ khi bạn "Xuất bản" dự án của mình, Microsoft.Web.Infraosystem.dll sẽ được triển khai.


2
Cảm ơn, điều đó đã giải quyết được vấn đề của tôi! Tôi đang sử dụng bộ điều khiển WebApi trong ứng dụng Webforms của mình và việc triển khai không thành công do thông báo lỗi đã đề cập. Bằng cách thêm tham chiếu vào dự án của tôi và sao chép qua .dll, tôi đã có thể làm cho nó hoạt động.
— magnattic

1
Ban đầu, tôi đã thử xem qua giao diện "Quản lý gói NuGet cho Giải pháp này", nhưng nó chỉ đơn giản cho biết rằng Microsoft.Web.Infraosystem.dll đã được cài đặt, mặc dù tôi không thể thấy tham chiếu đến nó ở bất kỳ đâu. Bằng cách chạy dòng lệnh của bạn, tôi đã có thể cài đặt trên cùng, xem tài liệu tham khảo, thiết lập sao chép cục bộ, triển khai lại ... đã sửa. Cảm ơn!!
— hardba11

1
Tôi đã cài đặt Trình quản lý gói nhưng nó đã được cài đặt. Nhưng tôi không thể xem Tài liệu tham khảo về dự án. Vì vậy, tôi đã tự thêm vào và đặt Copy Local thành True =)
— Akira Yamamoto

27
Lưu ý rằng trong một số trường hợp, bạn nhận được thông báo "Webapp đã có tham chiếu đến 'Microsoft.Web.Infraosystem 1.0.0.0'.". Sử dụng "Cập nhật-Gói Microsoft.Web.Infransions -Reinstall" trong những trường hợp đó.
— Robba

1
Tôi đã cài đặt nó nhưng 'Copy Local' được đặt thành false. Thay đổi nó thành true đã sửa nó! Cảm ơn
— Lyall

19

Tôi đã cài đặt MVC4 thông qua WPI và nó đã giúp tôi.


1
Điều này đã làm việc cho tôi vì sự cố của tôi là trên máy chủ nhưng không phải trên máy của tôi.
— John

14

Tôi đã từng gặp vấn đề tương tự. Khi tôi thử câu trả lời được chấp nhận (rockb), tôi nhận được thông báo rằng gói này đã được cài đặt và gán cho dự án của tôi. Tuy nhiên, khi tôi kiểm tra danh sách tài liệu tham khảo, nó KHÔNG được tham chiếu.

Microsoft.Web.Infra Structure đã được cài đặt trong thư mục gói giải pháp của tôi. Thay vì sử dụng NuGet để thêm gói, tôi chỉ sử dụng tùy chọn Thêm Tham chiếu. Ở bên trái của cửa sổ bật lên, tôi chọn Duyệt qua, sau đó nhấn nút Duyệt ở cuối cửa sổ. Tôi đã điều hướng đến thư mục gói trong thư mục chứa giải pháp của tôi, sau đó đi sâu vào ... \ mysolution \ package \ Microsoft.Web.Infra Architecture.1.0.0.0 \ lib \ net40 và nhấp vào Microsoft.Web.Infra Structure .dll. Sau khi nhấp vào OK, gói đã xuất hiện trong danh sách Tham khảo của tôi. Tôi đã sử dụng tùy chọn Gói triển khai web để triển khai trang web của mình và mọi thứ đều hoạt động.


1
Tiền bạc. Vì câu trả lời này quá gần đây và câu trả lời được chấp nhận (cũng không hoạt động với tôi) đã quá cũ, tôi cho rằng điều này có liên quan đến phiên bản cập nhật của Visual Studio. Cảm ơn!
— ớtNUT

1
Như Robba đã nói trong một bình luận về một câu trả lời khác, bạn có thể giải quyết vấn đề nó không nằm trong danh sách tham chiếu (nhưng gói đã được cài đặt) bằng: "Update-Package Microsoft.Web.Infraosystem -Reinstall". Tôi nghĩ điều đó tốt hơn là duyệt tìm bản lắp ráp.
— Jim W nói hãy phục hồi Monica vào

9

Tại sao không sao chép thủ công tệp Microsoft.Web.Infraosystem.dll vào thư mục BIN của máy chủ. Điều này hoạt động cho. Dự án của tôi là Website VS2010.

Tệp này có thể được định vị:

C: \ Program Files (x86) \ Microsoft ASP.NET \ ASP.NET MVC 4 \ Packages \ Microsoft.Web.Infra Architecture.1.0.0.0 \ lib \ net40

Chỉ cần sao chép và dán nó vào thư mục BIN.

Bạn có thể cần đưa cái này vào web.config nếu bạn chưa có

<compilation debug="true" targetFramework="4.0">
  <assemblies>
    <add assembly="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
  </assemblies>
</compilation>

Tham khảo: http://thedeveloperblog.com/


6

Tôi đã tìm thấy vấn đề. Thay vì thêm một (.cs)tệp lớp do nhầm lẫn, tôi đã thêm một Web API Controllerlớp đã thêm tệp cấu hình trong giải pháp của mình. Và tệp cấu hình đó đang tìm kiếm DLL được đề cập (Microsoft.Web.Infra Structure 1.0.0.0). Nó hoạt động khi tôi xóa tệp đó, làm sạch ứng dụng và sau đó xuất bản.


4

Sau khi cài đặt Microsoft.Web.Infra Structure qua Nuget-Package Manager

PM> Install-Package Microsoft.Web.Infrastructure

Sao chép Microsoft.Web.Infrastructure.dllthủ công từ Nuget-Packagethư mục trên ứng dụng web của bạn và sau đó dán nó vào thư mục bin của ứng dụng web được triển khai trên máy chủ web.

package \ Microsoft.Web.Infra Structure.1.0.0.0 \ lib \ net40 \ Microsoft.Web.Infraosystem.dll

Nó đã làm việc cho tôi.


Uninstall-Package Microsoft.Web.Infra Structure (sau đó kiểm tra bất kỳ thay đổi nào nếu sử dụng Team Foundation Server) sau đó Install-Package Microsoft.Web.Infraosystem đã làm việc cho tôi.
— GJKH

3
đôi khi hack là cách duy nhất để một sản phẩm microsoft hoạt động
— eagor

Cái này cũng có tác dụng với tôi. vâng, đó là một vụ hack nhưng nó đã tiết kiệm rất nhiều thời gian. làm thế nào nó sẽ tự động bị xóa từ thùng là bí ẩn
— Heemanshu Bhalla

4

Update-Package -reinstall Microsoft.Web.Infrastructure không hoạt động với tôi, vì tôi liên tục nhận được lỗi rằng nó đã được cài đặt.

Tôi đã phải điều hướng đến Microsoft.Web.Infraosystem.1.0.0.0 thư mục trong thư mục gói và xóa thư mục đó theo cách thủ công.

Sau khi làm điều này, chạy Install-Package Microsoft.Web.Infrastructure cài đặt nó.

Lưu ý: CopyLocalđã tự động được đặt thành true.


đã không hoạt động trong trường hợp của tôi. i thư mục cơ sở hạ tầng xóa từ gói và gói intalled một lần nữa
— Heemanshu Bhalla

0

Tôi gặp sự cố tương tự và "Microsoft.Web.Infraosystem.dll" dường như bị thiếu. Tôi đã thử một số lời khuyên và cài đặt MVC`s, v.v. và không có gì giúp được. Giải pháp là cài đặt "Các Cải tiến Dịch vụ Web (WSE) 1.0 SP1 cho Microsoft .NET" bao gồm Microsoft.Web.Infraosystem.dll. Có tại: http://www.microsoft.com/en-gb/download/details.aspx?id=4065


0

Tôi đã từng gặp vấn đề tương tự. Tôi đã thử cài đặt Visual Studio 2010 SP1 nhưng nó không hoạt động.

Cuối cùng, tôi nhận được Microsoft.Web.Infraosystem.dll từ đồng nghiệp. Bạn có thể tìm thấy dll trong PC của bạn bè nơi dự án đang hoạt động hoàn hảo. Cố gắng tìm kiếm dll trong Tệp ASP.NET Tạm thời / Tạm thời. Chuyển đến Temp bằng cách sử dụng% temp% trong cửa sổ chạy.

Sau khi nhận được dll vào máy tính của bạn, chỉ cần thêm tham chiếu vào dự án của bạn và nó sẽ hoạt động.


0

Việc xuất bản lại trang web đã khắc phục sự cố cho tôi.


0

Đã phải đối mặt với cùng một vấn đề và rất tiếc là không có gì ở đây đang hoạt động. Cuối cùng, tôi đã xem qua liên kết này: https://blogs.msdn.microsoft.com/jjameson/2009/11/18/the-copy-local-bug-in-visual-studio/

Hóa ra giải pháp khá ngu ngốc: đặt copy-local cho dll microsoft.web.infra Structure thành False, sau đó đặt nó trở lại True.

Nhân tiện, tôi nghĩ điều đang xảy ra là có hai phiên bản của dll microsoft.web.infraosystem, một phiên bản được cài đặt sẵn trong GAC và một phiên bản khác hiện là gói nuget. Tôi nghĩ rằng một cái đang che đậy cái kia, do đó gây ra vấn đề. Trong trường hợp cụ thể của tôi, trên máy chủ xây dựng của tôi, tôi cần nó được sao chép vào một thư mục (thư mục này sau đó được nén và gửi đi để triển khai). Tôi đoán hệ thống đã có một bản sao cục bộ và chỉ nghĩ "không, sẽ ổn thôi"


0

Tôi có một trang web chỉ tập tin. Đã thêm MVC 5 vào ứng dụng biểu mẫu web (nhắm mục tiêu net45). Tôi đã phải sửa đổi các package.config

package id="Microsoft.AspNet.Mvc" version="5.2.3" targetFramework="net45"

đến

package id="Microsoft.AspNet.Mvc" version="5.2.3" targetFramework="net45" developmentDependency="true"

để nó khởi động trên hộp cục bộ ở chế độ gỡ lỗi (trước đây có lỗi được mô tả ở trên). Chạy VS 2017 trên Windows 7 ... được mở thông qua Tệp> Mở> Trang web> Tệp (đã chọn thư mục gốc bên ngoài IIS).


0

Tôi đã gặp vấn đề tương tự sau khi nâng cấp một loạt các gói NuGet.
Tôi đã thử tất cả các loại xóa, làm sạch, gọi lại được mô tả ở đây và không có kết quả. Các tham chiếu không có Microsoft.Web.Infra Structure mặc dù trình quản lý NuGet cho thấy nó đã được cài đặt.

Vấn đề đã được giải quyết bằng cách thay thế:

  <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />

với

  <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net46" />

trong các gói.config. Thủ phạm rõ ràng là "net45".

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 cookie và Chính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.