“Không thể tải loại [Không gian tên] .Global” khiến tôi rất buồn


106

Trong ứng dụng .Net 2.0 Asp.net WebForms, tôi có Global.asax của mình chứa mã sau:

<%@ Application CodeBehind="Global.asax.cs" Inherits="MyNamespace.Global" Language="C#" %>

Tuy nhiên, khi tôi xây dựng, tôi nhận được lỗi nêu rõ-

Không thể tải loại 'MyNamespace.Global'.

Điều này có vẻ là do không gian tên MyNamespace (được định nghĩa trong mã đằng sau tệp Global.asax.cs) không được trình biên dịch nhìn thấy trong tệp Global.asax (không hiển thị trong R # intellisence ..). Điều này hóa ra là một hạt rất khó bẻ ... bất kỳ sự trợ giúp nào sẽ được đánh giá cao!

Lưu ý: Global.asax và Global.asax.cs nằm trong cùng một thư mục.

Lưu ý 2: Khi biên dịch từ dấu nhắc vs với csc nó biên dịch ok


Các trang khác trong ứng dụng có hoạt động không? Đôi khi điều này xảy ra khi máy chủ web được cấu hình để chạy 1.1 nhưng ứng dụng được biên dịch cho 2,0
Trưa Silk

vâng, 'Khung mục tiêu' là 2.0
gkdm

Câu trả lời:


162

Một tình huống mà tôi đã gặp phải gây ra sự cố này là khi bạn chỉ định nền tảng cho một bản dựng thông qua "Cấu hình bản dựng".

Nếu bạn chỉ định x86 làm nền tảng xây dựng của mình, visual studio sẽ tự động gán bin / x86 / Debug làm thư mục đầu ra của bạn cho dự án này. Điều này hoàn toàn hợp lệ cho các loại dự án khác, ngoại trừ các ứng dụng web mà ASP.NET mong đợi các tập hợp được xuất vào thư mục Bin.

Những gì tôi nhận thấy trong tình huống của mình là chúng được xuất ra cả hai (Bin và Bin / x86 / Debug), ngoại trừ một số dll, và không thể giải thích được là cái quan trọng nhất là dll ứng dụng web của bạn, bị thiếu trong Thùng thư mục.

Điều này rõ ràng đã gây ra sự cố biên dịch và do đó có ngoại lệ "Không thể tải loại Toàn cầu". Làm sạch dung dịch và xóa các tổ hợp không có sự khác biệt đối với các bản dựng tiếp theo. Giải pháp của tôi là chỉ thay đổi đường dẫn đầu ra trong cài đặt dự án cho ứng dụng web thành Bin (thay vì bin / x86 / Debug).


13
Ngoài ra: Hãy thử đóng và mở lại VS. Nếu bạn đang sử dụng máy chủ gỡ lỗi tích hợp sẵn thì nó có thể đang chạy một trang web khác. Việc mở / đóng sẽ đăng ký lại các cổng localhost.
BradLaney

1
Trong trường hợp của tôi, nó muốn đặt đầu ra của dự án trong inetpub \ wwwroot \ myproject \ bin, nhưng tôi đã cấu hình iisexpress để tìm trong myProject \ bin. Chỉ cần thay đổi đường dẫn đầu ra đã giải quyết được vấn đề.
shindigo

Trong trường hợp của tôi, tôi đã có một tệp .dll lẽ ra phải được bao gồm, nhưng không được đặt thành 'sao chép cục bộ' vì một số lý do. Điều này gây ra một vấn đề biên dịch tương tự như đã nêu trong câu trả lời này.
Khúc côn cầuJ

Cảm ơn, Stantona. Đây là điều có hiệu quả với tôi, và đúng lúc tôi phải về nhà.
Bill Norman

3
Thay đổi đường dẫn đầu ra của dự án thành thư mục bin đã giải quyết được vấn đề. Cảm ơn vì đã tiết kiệm ngày của tôi!
Tunahan

18

Bạn đã thay đổi không gian tên của dự án của mình chưa? Tôi đã thấy điều này đôi khi xảy ra khi tôi đã thay đổi không gian tên trong hộp thoại Thuộc tính dự án nhưng Visual Studio đã không thay đổi namespacekhai báo trong các tệp mã hiện có.


Bạn nghĩ tôi nên làm gì?
gkdm

1
Kiểm tra vùng tên trong tệp .cs của bạn và đảm bảo rằng nó giống với vùng được khai báo trong tệp asax. Sự nghi ngờ của tôi là họ sẽ khác nhau ...
PhilPursglove

Tôi không chắc khi đó. Tất cả những gì tôi có thể đề xuất ngay bây giờ là xây dựng lại và kiểm tra nội dung của không gian tên trong assembly của bạn bằng ILDASM.
PhilPursglove

Cảm ơn bạn, đây là giải pháp đã giúp tôi. Tôi sẽ sử dụng Resharper để kiểm tra tất cả các không gian tên trong giải pháp của mình.
Leonard

Tôi vừa xảy ra điều này: Trong một dự án MVC 5 (không quan trọng) và tôi đã thay đổi không gian tên dự án nhưng quên thay đổi Global.asax (và thư mục App_Start). Bất chấp kinh nghiệm, đôi khi những sơ suất ngớ ngẩn vẫn mắc phải bạn.
Jason Snelders

15

Tôi là người mới để phát triển asp .net và tôi đã đối mặt với vấn đề tương tự.

Tôi đã cập nhật lớp học dưới dạng partial lớp học và nó hoạt động tốt.

public partial class Global : System.Web.HttpApplication

1
Không chắc tại sao tệp Toàn cầu của tôi lại không có điều này nhưng đây là vấn đề đối với tôi, cảm ơn!
ginja

9

Tôi đã khởi động lại Visual Studio và lỗi đã biến mất!


2
điều tương tự cũng làm việc cho tôi. Đảm bảo rằng bạn đóng TẤT CẢ Visual Studio đã mở.
alansiqueira27 29/12/14

5

Đây là một cái khác cho những cuốn sách. Có vẻ như điều này xảy ra khi bạn khởi chạy nhiều ứng dụng web từ cùng một số cổng.

Về cơ bản, tôi có một vài nhánh mà tôi làm việc, tôi có một nhánh chính và một nhánh dàn dựng và một nhánh phát hành. Khi tôi chuyển nhánh sang nhánh dàn, tôi nhận thấy rằng nó đang sử dụng cùng một cấu hình địa chỉ cổng nên tôi đã chọn thay đổi điều đó. Sau đó, tôi nhận được một cảnh báo khác rằng đặt chỗ này xung đột với một ứng dụng được định cấu hình khác. Máy chủ IIS Express rất nhạy cảm về điều đó và vì bất cứ lý do gì, nó sẽ đặt cấu hình.

Chỉ cần chọn một cổng thứ ba không bị ảnh hưởng, vấn đề này đã biến mất vì sau đó nó ánh xạ cổng tới một ánh xạ thư mục mới (các nhánh của tôi nằm khác trên đĩa). Tôi nhận thấy điều này vì tôi đã cố gắng thay đổi tên loại được trỏ tớiGlobal.asax nhưng tên kiểu không thay đổi ngay cả sau khi khởi động lại máy chủ, rõ ràng là mã tôi đang thay đổi không được phản ánh bởi triển khai IIS Express.

Vì vậy, trước khi bạn mất ngủ quá nhiều vì điều này, hãy thử thay đổi số cổng IIS hiện đang được sử dụng để chạy dự án web.


5
  1. Nhấp chuột phải vào Giải pháp dự án và chọn Bản dựng hàng loạt.
  2. Sau đó chọn Tên dự án của bạn và Làm sạch Và Xây dựng lại.

Works Fine For Me IN VS 2015. Bây giờ tôi có thể sử dụng sự kiện Toàn cầu. Global.asaxTệp của tôi có dòng này

<%@ Application Language="C#" CodeBehind="~/App_Code/Global.asax.cs" Inherits="Global" %>

Và tôi tạo tệp lớp Global.asax.csnằm trong AppCodethư mục trông giống như

public partial class Global : HttpApplication
{
    public Global()
    {
        //
        // TODO: Add constructor logic here
        //
    }
}

Hy vọng điều này có thể giúp cho bạn


3

Kiểm tra Hành động xây dựng của Global.asax.cs. Nó phải được đặt thành Biên dịch.

Trong Solution Explorer, nhấp chuột phải vào Global.asax.cs và đi tới Thuộc tính. Trong ngăn Thuộc tính, hãy đặt Hành động xây dựng (trong khi không gỡ lỗi).

Có vẻ như VS 2008 không phải lúc nào cũng thêm tệp .asax (.cs) một cách chính xác theo mặc định.


3

Tôi đã gặp phải lỗi tương tự khi có

<clear/>

gắn thẻ là con (con đầu tiên) của

<assemblies>

trong Web.config của tôi . Tôi đã chèn các thẻ vào web.config của mình trong một nỗ lực để ngăn kế thừa cấu hình trong một ứng dụng được triển khai trong 'Trang web mặc định' trong IIS.


Điều này chắc chắn đã chỉ cho tôi đi đúng hướng. Kết thúc, tôi đã đặt <clear /> trong thư mục mẹ vì đó là một trình giữ chỗ trống. Tôi tin rằng vấn đề thực sự là nó đã xóa các hợp ngữ mà ứng dụng của tôi được tham chiếu, điều này đã ngăn không thể tải lắp ráp ứng dụng.
Doug Lampe

Tôi cũng đã trải qua điều này - việc loại bỏ các tập hợp đã chọn một cách rõ ràng thay vì xóa danh sách đã hoạt động tốt.
Arve Systad

2

Trong tình huống của tôi, nó liên quan đến loại Trang web / Ứng dụng web của dự án. Gần đây chúng tôi đã chuyển sang MVC và phải thay đổi nó thành Ứng dụng web.

Vì vậy, giải pháp rất đơn giản: chọn trang web của bạn trong Solution Explorer và xóa nó khỏi giải pháp, sau đó nhấp chuột phải vào giải pháp và chọn Thêm -> Dự án hiện có ( không phải Trang web ), biên dịch lại trang web.


2

Bài cũ nhưng tôi gặp lỗi này khi cố gắng chuyển đổi từ dự án trang web sang dự án ứng dụng web.

Làm theo hướng dẫn trên Liên kết này . Tôi vẫn gặp lỗi global.asax nhưng tất cả những gì tôi làm là xóa nó và thêm lại nó bằng cách nhấp chuột phải vào dự án trong visual studio và chọn thêm mục mới. Thêm tệp global.asax và nó đã hoạt động.


2

Thật không may, không ai trong số này làm việc cho tôi. Bản sửa lỗi tôi tìm thấy cụ thể hơn cho sự phát triển, cụ thể là gỡ lỗi trên máy cục bộ của bạn. Ngoài ra, thật không may, nó không thực sự khắc phục được sự cố theo cách tôi đã hy vọng, nhưng nếu bạn đang ở mức thông minh của mình, điều này có thể giúp bạn chạy lại.

TL; DR: Trong thuộc tính dự án, trong tab web, bên dưới Máy chủ, Chọn Sử dụng Máy chủ Web IIS cục bộ. Địa chỉ,

http://localhost/MyApp" 

đã được phổ biến (tôi có IIS7, .NET 4.0). Những gì được chọn ban đầu là "Sử dụng Máy chủ Phát triển Visual Studio" với một đường dẫn ảo là "/"

Điều thực sự khó hiểu đối với tôi là thực tế là không có gì khác hoạt động, tôi đã xem qua tất cả các đề xuất tôi có thể tìm thấy trên SO, và không có gì sẽ hoạt động. Điều kỳ lạ là, lỗi đã xảy ra (dường như đã được vài tháng kể từ lần cuối tôi xem lại) khi tôi thêm tệp ascx mới tương tự như tệp hiện có đã được thêm từ dự án .net 2.0 cũ (tôi nghĩ) điều đó sẽ cho phép quản lý người dùng tùy chỉnh từ bên trong ứng dụng. Nó đã hoạt động, rất đẹp, trong một thời gian dài, cho đến khi tôi thử thêm tệp mới này. Sau khi thêm nó và thấy lỗi, tôi đã ngay lập tức hoàn nguyên tất cả các thay đổi, nhưng lỗi Global.ascx sẽ không biến mất, thậm chí không loại bỏ toàn bộ dự án và lấy lại bản mới nhất từ ​​điều khiển nguồn.


2

Tôi đã chuyển đổi giải pháp của mình từ VS2003 sang VS2010 và gặp sự cố khi chuyển đổi dự án ứng dụng web.

Tôi đã trải qua cùng một vấn đề và không có câu trả lời nào phù hợp với tôi.

Điều làm việc cho tôi là:

  • Nhấp chuột phải vào giải pháp và chọn Trình quản lý cấu hình
  • Đã xem xét từng cấu hình trong danh sách thả xuống 'Cấu hình giải pháp hoạt động'.
  • Bao gồm ứng dụng web trong bản dựng bằng cách đánh dấu vào hộp kiểm 'Bản dựng'.

có vẻ như các vấn đề tôi gặp phải trong quá trình chuyển đổi đã xóa dự án ứng dụng web khỏi bản dựng vì một số lý do.

Hy vọng rằng câu trả lời này sẽ giúp bất kỳ ai khác có cùng vấn đề ...


1

Nếu bạn xây dựng lại hoặc thay đổi một dự án và di chuyển qua các tệp từ một dự án cũ, hãy đảm bảo kiểm tra khối Kế thừa toàn cầu của bạn. Trong trường hợp của tôi, dự án / giải pháp trước đây được đặt tên là mạng nội bộ và tôi đã tạo lại nó dưới dạng Intranet, nhưng khi tôi di chuyển qua các tệp, nó không thích chữ thường (duh). Chỉ cần xem qua tên của các tệp.


1

Thay đổi GUID của assembly. Điều này khắc phục nhiều vấn đề, tôi đã tìm thấy.


Làm cách nào để bạn thay đổi GUID?
Drew Chapin

1

Tôi đã gặp sự cố tương tự trong đó tôi nhận được lỗi này trên một dự án.

Could not load type [Namespace].Global
Error in Line 1   etc etc

Sau khi dành một thời gian, tôi nghi ngờ một chức năng có thể có lỗi trong Lớp .. sau đó nhận xét rằng chức năng cụ thể vấn đề của tôi đã được giải quyết.

Tôi không biết tại sao Visual Studio không cho tôi lỗi cụ thể đó vào thời điểm gỡ lỗi. Nhưng lỗi này có thể xảy ra do một số lỗi trong tệp lớp ..


1

Công việc này đối với tôi: Điều đầu tiên: có vẻ như bất kể bạn đã nói gì với studio trực quan, lý tưởng là luôn xem tệp trong: bin (đối với ứng dụng web và tất nhiên là trong trường hợp của tôi) Vì vậy, ngay cả khi tôi nói với studio trực quan một đường dẫn cụ thể để tải tệp, lý tưởng tiếp tục tìm kiếm đường dẫn sai. Vì vậy, tôi thay đổi loại đầu ra trong: Build / Configuration Manager thành: Release (trước đó tôi dọn dẹp giải pháp, thậm chí theo cách thủ công) vì vậy, khi tệp .dll được tạo, tôi đã di chuyển theo cách thủ công sang thư mục "bin" trong dự án / giải pháp thư mục. Hy vọng điều này sẽ hữu ích !!


1

Trong trường hợp của tôi, Đó là do bộ xử lý mục tiêu của tôi (x64), tôi đã thay đổi nó thành x86 đã làm sạch dự án, khởi động lại VS (2012) và xây dựng lại dự án; sau đó nó đã biến mất.


1

Khi tôi gặp sự cố này gần đây nhất, tôi đã thử mọi thứ được đề cập ở đây nhưng không có kết quả. Sau khi xé tóc ra, tôi quyết định thử xóa toàn bộ cơ sở mã của mình (vâng, khá tuyệt!) Và sau đó tải xuống lại mọi thứ từ kho mã của mình. Sau khi làm điều này, mọi thứ lại hoạt động tốt.

Có vẻ như một giải pháp cực đoan nhưng tôi chỉ nghĩ rằng tôi sẽ đưa nó vào đây vì nó chưa được đề cập trước đây trong chủ đề này.

(Lưu ý rằng lần khác tôi gặp phải sự cố này, là khi Global.asax được kế thừa từ một thành phần cần được đăng ký trên máy chủ. Điều này bị thiếu nên tôi gặp sự cố tương tự).

TL; DR; Nếu tất cả các câu trả lời trong chuỗi này không phù hợp với bạn, hãy thử xóa và sau đó tải xuống lại toàn bộ cơ sở mã của bạn!


1

Tôi đã gặp vấn đề này một vài lần và trong mỗi trường hợp, tôi đang xây dựng lại máy tính hoặc chuyển sang máy tính mới. Bước đầu tiên của tôi (bên cạnh việc cập nhật máy và cài đặt Visual Studio) là kéo các dự án của tôi xuống khỏi Git và kiểm tra chúng.

Tôi gặp lỗi này mỗi lần vì tôi cố gắng truy cập mã cục bộ của mình trước khi biên dịch nó. Bạn thấy đấy, tôi có thiết lập Git và Subversion để bỏ qua các thư mục bin / build của mình, vì vậy sau một lần kéo từ kho lưu trữ của tôi, tôi đã quên chạy một bản dựng kéo các gói yêu cầu từ Nuget (vì tôi cũng đã bỏ qua Git / SVN) và tạo DLL cần thiết để thực sự chạy ứng dụng của tôi.

Tôi nghi ngờ điều này sẽ giải quyết được hầu hết các vấn đề của mọi người, nhưng tôi không thấy nó trong danh sách các giải pháp tiềm năng nên tôi nghĩ mình sẽ thêm nó.


1

Trong trường hợp của tôi, tôi đã thêm Global.asax vào một dự án WCF để thử nghiệm với nó, nhưng đã quyết định xóa nó. Tôi đã xóa nó khỏi Solution Explorer, nhưng vì nó vẫn còn trong thư mục, nên đường ống vẫn tìm thấy nó và gây ra lỗi này.

Tôi đã xóa Global.ASAX và GLobal.asax.cs khỏi hệ thống tệp và điều đó đã giải quyết được lỗi.


Điều này đã giải quyết nó cho tôi, cảm ơn, nhưng tôi cũng muốn thêm cho những người khác trong tương lai rằng trong trường hợp của tôi, tôi chưa bao giờ thêm Global.asax vào dự án của mình. Nhưng như đã đề cập ở đây, các tệp global.asax và global.asax.cs nằm trong hệ thống tệp của tôi. Khi tôi xóa chúng, lỗi đã biến mất.
stackonfire 21/1218

1

Đã có gần 20 năm trong lĩnh vực phát triển trò chơi, hạt dẻ này đã tiếp tục gây khó chịu cho tôi qua nhiều dự án.

Như vậy, hôm nay trong khi gặp phải vấn đề tương tự một lần nữa, chống lại một dự án khác, tôi quyết định điều tra thêm và tôi tin rằng điều này có liên quan đến vị trí thư mục Bin ... hoặc cụ thể hơn, đường dẫn đầu ra của thư mục bin.

Đối với tôi, đối với một ứng dụng web dựa trên dịch vụ đơn giản được định cấu hình để chạy / gỡ lỗi thông qua IIS, việc thay đổi đường dẫn đầu ra từ bin \ debug thành bin \ đã giải quyết được vấn đề đó

Dự án> Thuộc tính> Xây dựng> Đường dẫn đầu ra

Nghiêm túc hy vọng điều này sẽ giúp.


0

Tôi đã bị bối rối bởi cùng một vấn đề. Tôi đã cố gắng xóa và vàglobal.asax (đóng VS2010 trước khi thêm). Đã xóa dự án / giải pháp, kiểm tra bất kỳ thay đổi nào trong cấu hình ứng dụng web và các nội dung khác đã hoạt động với những người khác ở đây trong chuỗi SO. Cuối cùng tôi đã làm sạch giải pháp, xóa các thư mục bin / obj và dừng mọi máy chủ phát triển VS2010 đang chạy, sau đó tôi hoàn nguyên tất cả các thay đổi và nhận thấy ứng dụng đang chạy trở lại. Tôi đã làm lại những thứ tương tự và bây giờ nó hoạt động tốt.

Đã xảy ra một lần nữa và lần này giải pháp này đã hiệu quả với tôi.


0

đi tới Trình quản lý cấu hình trong thuộc tính cho giải pháp của bạn. Sau đó, đảm bảo rằng tất cả các dự án và đang được xây dựng, và điều này sẽ không thành vấn đề.


0

Tôi đã phải xóa (trùng lặp) các tệp khỏi đĩa không có trong dự án. Có vẻ như các bản sao do đổi tên không thành công. Các tên tệp khác nhau, nhưng cùng một mã.

Sau khi xóa tất cả các tệp oof. *, Tôi đã có thể quét.

  • foo.aspx
  • foo.aspx.cs
  • foo.aspx.designer.cs
  • oof.aspx
  • oof.aspx.cs
  • oof.aspx.designer.cs

0

trong trường hợp của tôi, đó là IISExpress trỏ đến cùng một cổng với IIS để giải quyết nó

C:\Users\Your-User-Name\Documents\IISExpress\config\applicationhost.config

và tìm kiếm cổng, bạn sẽ tìm thấy <site>...</site>thẻ mà bạn cần xóa hoặc nhận xét nó


0

Tôi gặp sự cố này khi chỉ triển khai trên máy chủ sản phẩm. Trong các môi trường khác của tôi, nó hoạt động ... Tôi chỉ xóa nội dung trong thư mục bin sau đó xuất bản lại và nó hoạt động sau đó.


0

Nếu bạn đang sử dụng Visual Studio, Có thể bạn đang cố thực thi ứng dụng ở Chế độ phát hành, hãy thử thay đổi nó thành Chế độ gỡ lỗi.


0

Tôi đã cố gắng tạo lại giải pháp và xóa các tệp tạm thời ASP.NET nhưng không thành công.
Nhưng sau khi chạy IISRESET , lỗi đã biến mất.

Cập nhật : Tôi lại gặp sự cố tương tự 1 tháng sau đó. Tôi nhận thấy rằng MyWebsite.DLL tồn tại trong thư mục bin, nhưng không tồn tại trong Tệp ASP.NET Tạm thời (C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Tệp ASP.NET Tạm thời). Tôi đã thử một số điều được đề xuất về điều này và "Thông báo lỗi trình phân tích cú pháp: Không thể tải loại" trong câu hỏi Global.asax (tôi thực sự quên về câu trả lời của chính mình), nhưng lỗi lại biến mất chỉ sau IISRESET


0

Trong trường hợp của tôi VS 2017, tải giải pháp nhẹ đã gây ra sự cố này. Tôi đã tắt nó và khởi động lại VS sau đó xây dựng lại giải pháp của mình và sự cố đã biến mất.


2
Giải pháp "nhẹ" là gì?
Fandango68,

0

Chỉ muốn thêm hai xu của tôi. Tôi cũng nhận được lỗi tương tự và tôi đã thử tất cả các đề xuất nhưng không có kết quả. Hoàn cảnh của tôi có lẽ đã khác?

Hóa ra, tệp "AssemblyInfo.cs" được tạo tự động có một số khoảng trắng không liên quan, điều này ngăn tôi khởi chạy ứng dụng web (thông qua gỡ lỗi). Đây là tệp trông như thế nào:

[assembly: AssemblyTitle("WebApplication2")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("

            ")]
[assembly: AssemblyProduct("WebApplication2")]
[assembly: AssemblyCopyright("Copyright © 

             2017")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

Sau khi giết hết các không gian trong AssemblyCompany và AssemblyCopyright, cuối cùng tôi đã có thể xây dựng và khởi chạy dự án.

Được quan sát trong môi trường sau: --Visual Studio 2017 Community phiên bản 15.3.0 --Win 7 x64 Enterprise - Dự án mới> Visual C #> Web> Ứng dụng web ASP.NET> Biểu mẫu web

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.