Lỗi: allowDefDef = 'MachineToApplication' vượt quá mức ứng dụng


193

Tôi đã tải về dự án trực tuyến trong ASP.Net. Trong khi chạy ứng dụng, tôi gặp lỗi

Đó là một lỗi khi sử dụng một phần được đăng ký là allowDefDef = 'MachineToApplication' vượt quá mức ứng dụng. Lỗi này có thể do một thư mục ảo không được cấu hình như một ứng dụng trong IIS.

Những thay đổi nào tôi nên thực hiện trong web.config hoặc nơi khác để thực hiện công việc này?


53
Không có câu trả lời nào được tìm thấy trên web làm việc cho tôi. Vấn đề của tôi đã được giải quyết bằng cách hiển thị tất cả các tệp / thư mục ẩn và xóa objthư mục.
Người đàn ông Muffin

6
Vấn đề này vẫn còn biểu hiện trong VS2012. Tôi đã mở một báo cáo lỗi với Microsoft. Bất cứ ai gặp sự cố, vui lòng cập nhật báo cáo lỗi connect.microsoft.com/VisualStudio/feedback/details/779737/ trộm
Eric J.

4
xóa thư mục obj cũng giải quyết vấn đề này cho tôi. cảm ơn @Nick! (xin lỗi vì sự hồi sinh)
Jordan Wayne Crabb

GIẢI PHÁP TẠI ĐÂY: stackoverflow.com/questions/9300927/
Ấn

trong trường hợp của tôi, web.config thêm trong thư mục con gây ra sự cố này. Khi tôi xóa trang web bổ sung đó. Lỗi sẽ không còn nữa
Dio Phung

Câu trả lời:


96

Tôi vừa gặp "niềm vui" này. Nó dường như xuất hiện ngay sau khi tôi xuất bản một ứng dụng web ở chế độ phát hành.

Cách duy nhất để giải quyết vấn đề liên tục mà tôi đã tìm thấy là theo dõi danh sách kiểm tra này:

  1. Làm sạch giải pháp trong khi giải pháp của bạn được cấu hình trong chế độ Phát hành.
  2. Làm sạch giải pháp trong khi giải pháp của bạn được cấu hình ở chế độ Gỡ lỗi.
  3. Xây dựng trong khi giải pháp của bạn được cấu hình ở chế độ Gỡ lỗi.

18
Chỉ trả lời mà làm việc cho tôi cũng được. Tôi đã có nhiều lỗi khác đang chờ tôi sau đó nhưng chúng không liên quan. Tôi đến đây bằng cách thiết lập MvcBuildViewsđể true.
Benjamin

+1 BTW: Tôi nghĩ lý do điều này hiệu quả với tôi là bản dựng gần đây nhất tôi có là Debug . Tôi đã mở giải pháp, sửa lỗi và cố gắng xây dựng ở chế độ R Release . Dọn dẹp trong bản phát hành không hoạt động nhưng làm sạch trong Debug thì có. (Có lẽ một kết hợp của 2 là những gì cần thiết, tức là xóa mọi tham chiếu cũ cho dlls, cho dù là Debug hay Release ).
Scotty.NET

4
Tôi đã làm sạch , sau đó đi đến * thuộc tính dự án -> Web -> Tạo thư mục ảo và sau đó vấn đề đã được giải quyết
gldraphael

Làm sạch và xây dựng lại trong khi ở chế độ gỡ lỗi là tất cả những gì cần thiết cho tôi. Không cần phải chuyển đổi qua lại giữa phát hành và gỡ lỗi. Nhưng vâng, SẠCH rất quan trọng. Đó là trung tâm của vấn đề.
markaaronky

1
Clean không có sẵn trong trường hợp của tôi, điều mà tôi chưa từng thấy trước đây. Đây là một ứng dụng VB.NET rất cũ mà tôi được thừa hưởng từ một đồng nghiệp cũ.
tnk479

82

Chỉ cần đi qua bài viết này và điều đó đã xảy ra với tôi.
Chỉ cần Cleandự án và lỗi đi. (phải là lỗi VS2010)


giải pháp này nếu bạn gặp lỗi này trong Visual Studio.
gideon

22
Đôi khi sạch sẽ không xóa objthư mục. Điều này đôi khi cần xóa quá.
jaypeagi

1
Không sạch cũng không xóa obj làm việc. Giải pháp của Johnny Reilly làm việc cho tôi.
Benjamin

Tôi đã phải chạy sạch trong cả hai chế độ gỡ lỗi và phát hành để thoát khỏi điều này. Chạy nó chỉ để gỡ lỗi dường như không giải quyết được vấn đề.
Juha Palomäki

Vấn đề tương tự vẫn tồn tại trong VS2013SP1. Việc dọn dẹp đơn giản cho phép tôi triển khai lại.
Brian Knoblauch

25

Tôi vừa gặp vấn đề này khi xây dựng phiên bản thứ hai của trang web của mình. Nó đã không xảy ra khi tôi xây dựng nó lần đầu tiên.

Tôi vừa xóa các thư mục bin và obj, chạy Giải pháp sạch và xây dựng lại, lần này không có vấn đề gì.


2
Đây là giải pháp duy nhất phù hợp với tôi trong VS Express 2012 cho Web. Ngoài ra, tôi chỉ bắt đầu gặp lỗi này sau khi tôi tạo cấu hình giải pháp và thêm MvcBuildViews được đặt thành true cho Thuộc tính nhóm của nó trong nguồn .csproj.
Jeremy Cook

20

Không ai. Bạn cần thiết lập thư mục bạn đã đặt trang web dưới dạng một ứng dụng web trong IIS .


1
Mặc dù về mặt kỹ thuật đó là một sự thay đổi "ở nơi khác để thực hiện công việc này";)
Zhaph - Ben Duguid

2
và đây là giải pháp nếu bạn gặp lỗi này trong ứng dụng web của mình! = P
gideon

Tôi đã được thiết lập như là một ứng dụng. Giải pháp của Johnny Reilly đã làm việc trong trường hợp của tôi.
Benjamin

Tôi chỉ đang cố gắng để ứng dụng Webforms mẫu hoạt động. Nó là tốt trên localhost nhưng không phải trên một máy chủ trên mạng LAN. Giải pháp này hiệu quả với tôi: VS2015 CE, Windows Server 2008 trên mạng LAN của tôi. Tôi đã sử dụng trang MS này để giải thích những việc cần làm trên IIS: support.microsoft.com/en-gb/kb/917413 . Không có thay đổi đối với mã mẫu.
Tim

16

Lỗi này xảy ra khi bạn cố gắng mở một dự án như một trang web. Cách dễ nhất để xác định xem bạn đã tạo một trang web hoặc dự án là kiểm tra thư mục giải pháp của bạn (tức là nơi bạn đã lưu mã của mình) và xem liệu bạn có tệp * .sln trong thư mục gốc hay không, nếu bạn làm vậy thì bạn ' đã tạo ra một dự án.

Chỉ cần thêm, tôi đã gặp phải lỗi này ngay khi tôi cố mở một dự án mà tôi đã tạo một lúc trước bằng cách chọn "Tệp", "Trang web mở" từ các menu Visual Studio trong khi tôi nên chọn "Tệp", "Mở dự án" thay thế. Tôi facepalmed ngay khi tôi nhận ra :)


đây cũng là vấn đề của tôi
mgrenier

13

Trong Visual Studio 2013 tôi đã vật lộn với điều này trong một thời gian và khá dễ để giải quyết chỉ cần làm theo những gì ngoại lệ nói "thư mục ảo không được cấu hình như một ứng dụng trong IIS"

Trong trường hợp của tôi, tôi đã WebServicetrồng bên trong IIS websitenhư vậy

  1. Tôi đã mở trang web trong IIS manager
  2. nhấp chuột phải vào thư mục WCF
  3. nhấp Convert to Application
  4. và sau đó gửi với Ok

WCF đã trở lại và chạy.


1
Tôi đã gặp phải vấn đề này khi tôi chuyển ứng dụng của mình sang Trang web mặc định. Điểm 3 đã làm mẹo để giải quyết vấn đề của tôi.
xe đạp s.

Điều này làm việc cho tôi khi chúng tôi chuyển đến một máy chủ web mới. Sau khi thực hiện "Chuyển đổi thành ứng dụng", biểu tượng thư mục đã thay đổi và ứng dụng web ASP.NET MVC bắt đầu hoạt động trên máy chủ web đó.
Greg Barth

11

Lỗi cho thấy mã bạn đang sử dụng đang mong đợi một thư mục ảo sẽ được thiết lập trên IIS.

Tra cứu tài liệu và thêm thư mục ảo cần thiết. Nó phải là một thư mục có web.configtrong đó (không phải thư mục gốc).


8
Xóa một web.config thứ hai trong một thư mục thấp hơn đã giải quyết vấn đề cho tôi.
Lucas B

10
Một trong những chàng trai của tôi đã có anh <authentication mode="Forms"><forms name="..." loginUrl="~/Login/Login/" timeout="2880" /></authentication>ở mình Web.configtrong Viewschứ không phải sau đó vào thư mục thân cây, khiến vấn đề này.
Serj Sagan

10

Nếu bạn có dự án MVC với chế độ xem được kích hoạt, một trong những giải pháp là xóa thư mục obj trước khi xây dựng. Thêm vào tập tin dự án:

<Target Name="BeforeBuild">
    <!-- Remove obj folder -->
    <RemoveDir Directories="$(BaseIntermediateOutputPath)" />
    <!-- Remove bin folder -->
    <RemoveDir Directories="$(BaseOutputPath)" />
</Target>

Đây là bài viết: Cách xóa thư mục bin và / hoặc obj trước khi xây dựng hoặc triển khai


8

Một thay đổi web.config gần đây có thể nằm trong tệp web.config sai.

Một thuộc <machineKey...>tính đã được thêm vào Lượt xem / web.config . Cho dù có bao nhiêu Cleans and Rebuilds vẫn tồn tại. Cách khắc phục là di chuyển thuộc tính vào root /web.config .


Chúng tôi đã vô tình sao chép Web.config gốc vào thư mục / Lượt xem. Đặt phiên bản gốc, nhỏ hơn nhiều cho thư mục Lượt xem trong đó và trang web hoạt động trở lại.
Grandizer

6

nếu bạn gặp phải lỗi này

Đó là một lỗi khi sử dụng một phần được đăng ký là allowDefDef = 'MachineToApplication' vượt quá mức ứng dụng. Lỗi này có thể do một thư mục ảo không được cấu hình như một ứng dụng trong IIS

GIẢI PHÁP
Tôi gặp vấn đề tương tự với VS 2012. Tôi đã giải quyết vấn đề này bằng cách

  1. Dỡ bỏ dự án hiện tại của bạn
  2. chỉnh sửa .csproj của bạn
  3. Tìm thấy điều này <MvcBuildViews>false</MvcBuildViews>
  4. Thay vì sai thay đổi giá trị thành đúng
  5. Tải lại dự án của bạn và bạn không nên có thêm lỗi này

Nếu bạn có thì một giải pháp là xóa nội dung của thư mục obj trong dự án do trình biên dịch tạo ra.


18
Đó là kỳ lạ, thiết lập MvcBuildViewsđể truelà cách tôi đã nhận lỗi ở nơi đầu tiên.
Benjamin

Tôi cũng bắt đầu nhận được thông báo lỗi sau khi thay đổi MvcBuildViews thành true. Tôi đã thoát khỏi thông báo lỗi bằng cách thay đổi giá trị thành sai.
Juha Palomäki

3
Tôi đã thực hiện "Giải pháp sạch" ở cả chế độ phát hành và gỡ lỗi và hiện tại bản dựng cũng hoạt động với<MvcBuildViews>true</MvcBuildViews>
Juha Palomäki

@ JuhaPalomäki siêu ngọt! Cảm ơn.
Haroon

Tôi đã hoàn toàn ngược lại với tình huống @visar_uruqi. Ý tôi là tại tôi csproj tập tin tôi đã có MvcBuildViews tùy chọn thiết lập là true và khi tôi đặt thành sai, lỗi đã được bỏ qua (không hiển thị).
Bronek

5

Trong trường hợp của tôi, vấn đề chỉ xuất hiện sau khi tôi xuất bản dự án lên thư mục con. Vì thiếu kiến ​​thức, tôi đã đặt web_publishthư mục con của mình vào thư mục web_project.

Rõ ràng là web_publishchứa cũng chính Web.configs mà dự án chứa. Tuy nhiên, web_projectkhông biết rằng tôi web_publishnên tránh khi tìm kiếm Web.configs trong các thư mục con lồng nhau. Bằng cách này, các Web.configs đã được nhân đôi và lỗi xuất hiện.

Giải pháp là đặt web_publishnơi khác của tôi .


5

Trong trường hợp của tôi, có một thư mục "Sao lưu" chứa một bản sao khác của toàn bộ trang web trong đó. Điều này có nghĩa là khác web.configvà do đó, bản dựng không thành công với lỗi này. Tôi đã xóa thư mục "Sao lưu", thực hiện giải pháp Clean trên các bản dựng Gỡ lỗi và Phát hành và lỗi đã biến mất.


Tôi cũng gặp trường hợp tương tự, ai đó đã tạo thư mục con "Đã xuất bản" trong thư mục gốc của trang web trên đĩa (đây là một Dự án Web cũ, một trong những dự án không có tệp Giải pháp) và điều này có Web.config trong đó. Lỗi xảy ra khi Visual Studio cố gắng xây dựng nó và dĩ nhiên không có số lượng thư mục "obj" Dọn dẹp / xóa, v.v. Tôi đã thấy khá nhiều trường hợp của lỗi này và hầu như luôn luôn là một Web.config trùng lặp đang ẩn nấp ở đâu đó ... (thông báo lỗi thực sự rất tốt!)
Chi tiết

4

Trong trường hợp của tôi,

Giải pháp chứa 6 dự án, 1 thư mục chính và 5 thư mục phụ. tất cả các thư mục con có web.config.

Khi chạy bất kỳ trang nào trong các thư mục con, tôi cũng gặp lỗi tương tự.

Tôi đã xóa dòng này khỏi web.config,

<authentication mode="Windows"/>

Điều đó đã làm việc cho tôi.


Những dòng bạn đã loại bỏ?
Mark Berry

Tôi đoán là có dòng nhưng không hiển thị do một số vấn đề thụt lề tôi đoán. Tôi đã chỉnh sửa và dán mã trong một khối mã, nó hiển thị ngay bây giờ. Vui lòng kiểm tra và cho tôi biết nếu tôi có thể giúp đỡ trong việc gì đó.
p_champ

Cảm ơn, điều đó xác nhận rằng nó đã thất bại đối với tôi quá. Tôi chỉ có một trang web, vì vậy tôi đã khắc phục nó bằng cách mở dưới dạng Trang web chứ không phải là một dự án.
Mark Berry

4

Làm sạch dự án của bạn Xóa thư mục / obj (có thể sử dụng xuất bản và triển khai? - có lỗi trong đó)


Chỉ có giải pháp làm việc cho tôi. Đến đây bằng cách đặt <MvcBuildViews> true </ MvcBuildViews>.
Paul

3

Vấn đề của tôi là tôi đã vô tình xuất bản dịch vụ web của mình đến một vị trí hoàn thành trước trên bản cài đặt mới của VS2010.

Tôi đã xuất bản vào một thư mục có tên PreCompiledWeb và sự hiện diện của web.config tôi nghi ngờ đã làm hỏng nó.

Tôi chỉ đơn giản là thu gọn thư mục, và làm mới dự án.

Khi nhấp đúp vào lỗi này - nó đưa tôi đến tệp web.config sai lầm đó, điều này khiến tôi không thể tin được.


2

Đây có thể là vấn đề về phiên bản khi bạn tải xuống dự án .Net framework 2.0 và muốn mở nó vào VS2008, sau đó bạn sẽ cần nâng cấp lên phiên bản mới nhất và VS sẽ tạo Sao lưu thư mục trong cùng thư mục gốc. Bạn sẽ được câu trả lời ở đây .


Câu trả lời của ranganh ở đây cung cấp thêm một số chi tiết.
Mark Berry

2

Tôi đã gặp lỗi này khi xây dựng giải pháp với Dự án triển khai Web được tạo thành giải pháp của tôi. Tôi khắc phục lỗi bằng cách xóa thư mục nơi Dự án triển khai Web được xây dựng. Thư mục này được chỉ định trong thuộc tính "Thư mục dự án" của thuộc tính WDP


2

Xóa các thư mục bin và obj. Sau đó xây dựng lại giải pháp.


Đối với File Explorer, sử dụng truy vấn tìm kiếm "obj" kind: = thư mục và "bin" kind: = thư mục để tìm / xóa các thư mục này. Điều này làm việc cho tôi.
Robert J. Tốt

2

Rõ ràng có hai tệp web.config trong giải pháp của tôi. Tôi đang sử dụng MVC4 và có một tệp cấu hình khác trong Lượt xem và tôi đã thực hiện thay đổi trong tệp sai. Đã sửa ở đó giúp tôi.

Nhưng bạn luôn có thể thay đổi chuyển hướng / tuyến mặc định trong tệp global.asax.


1

Có lẽ bạn có một thư mục dự án asp.net phụ trong thư mục dự án không được cấu hình là thư mục ảo. Thiết lập dự án để chạy trong IIS.



1

Tôi gặp vấn đề này thường xuyên hơn nếu "true" được bật trong tệp dự án.

  1. Đặt sai

Như Jonny nói:

  1. Làm sạch giải pháp trong khi giải pháp của bạn được cấu hình trong chế độ Phát hành.
  2. Làm sạch giải pháp trong khi giải pháp của bạn được cấu hình ở chế độ Gỡ lỗi.
  3. Xây dựng trong khi giải pháp của bạn được cấu hình ở chế độ Gỡ lỗi.

1

Tôi đã có một dự án mà tôi không muốn trở thành một ứng dụng web mà tôi muốn nó là một thư mục. Câu trả lời là xóa hoàn toàn tệp web.config. Nó chỉ thuộc về root của một ứng dụng.


1

Nếu bạn gặp phải vấn đề này trong khi xuất bản trang web hoặc ứng dụng của mình trên một số máy chủ, giải pháp đơn giản tôi đã sử dụng là chuyển đổi thư mục chứa tệp thành ứng dụng web.


4
Xin chào, chào mừng bạn đến với Stack Overflow! Bạn có thể vui lòng mở rộng câu trả lời của bạn? Bạn có thể giải thích cách chuyển đổi thư mục thành Ứng dụng web không? Điều này sẽ giúp người khác hiểu câu trả lời của bạn tốt hơn.
Jesse

1
Trong Trình quản lý IIS, trong ngăn Kết nối ở bên phải, bạn bấm chuột phải vào thư mục bên dưới các trang web bạn đã tạo (hoặc Trang web mặc định) và chọn Convert to Application.
Aske B.

1

Tôi đã gặp vấn đề tương tự trong VS 2013 sau khi xuất bản dự án của mình ở chế độ gỡ lỗi. Vấn đề đã được giải quyết bằng cách xóa obj / files


1

Tôi có một dự án trang web.

Trong trường hợp của tôi, tôi đã chuyển tệp giải pháp sang một đường dẫn khác và điều đó gây ra vấn đề. Tôi đã khôi phục nó đến vị trí trước đó và vấn đề đã đi ra ngoài.


1

Đối với bất kỳ ai vẫn đang tìm kiếm, giải pháp của tôi là xóa cả thư mục bin và obj và khởi động lại studio hình ảnh dường như để sửa nó.


1

Thông qua Visual Studio, tôi đã xuất bản Dịch vụ WCF qua FTP , đến một máy chủ bên ngoài. Nó hoạt động tốt tại địa phương và khi xuất bản lên máy chủ nội bộ, nhưng không hoạt động bên ngoài. Giải pháp là xuất bản mà không cung cấp Site Path (nói cách khác, xuất bản trực tiếp vào thư mục gốc của thư mục ảo).

Tôi không chắc tại sao nó hoạt động, vì tôi đã thử di chuyển các tệp vào thư mục gốc thông qua một Máy khách FTP bên ngoài - trong số nhiều nỗ lực khác, bao gồm tất cả được liệt kê ở đây. Có lẽ đó là một cái gì đó với hồ sơ xuất bản, giống như nó là dành cho FabianVal . Nhưng tôi không có tâm trạng thử nghiệm nữa vào thời điểm này, vì tôi đang vội vã để tăng tốc sau tất cả những ngày lãng phí cho vấn đề này.


0

mẹo 1: làm sạch và sau đó xây dựng lại.

mẹo 2: chỉ cần đóng VS và mở lại.

mẹo 3: dự án đã tải xuống có thể nằm trong một thư mục con khác ... mở thư mục chứa các tệp .net của bạn.

c: / demo1 / demo / (tất cả các tệp)

Bạn nên mở demo từ vs ... chứ không phải demo1.


0

Tôi đã thử mọi giải pháp ở trên, nhưng không ai trong số họ làm việc cho vấn đề của tôi. (Tôi chắc chắn có 1000 giải pháp cho vấn đề này) Đối với kịch bản của tôi, tôi đã cố gắng xuất bản dịch vụ web WCF mà tôi đã thử nghiệm sản xuất.

Tuy nhiên, tôi đã không nhận ra rằng trong sản xuất, chúng tôi chỉ là HTTPS, có nghĩa là chúng tôi chuyển hướng mọi thứ sang HTTPS. Hóa ra, tôi đã chỉ đến dịch vụ qua HTTP thay vì HTTPS, do đó gây ra lỗi. Giải pháp trong kịch bản này là chỉ cần thay đổi giao thức địa chỉ thành HTTPS chứ không phải HTTP.

Tôi hy vọng điều đó sẽ giúp một số linh hồn đáng thương ngoài kia đang cố gắng tìm ra vấn đề này.

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.