2010-08-12 34 views
7

Chúng tôi không gặp vấn đề gì khi chạy các thư mục ảo .NET 4.0 trong các trang web 2.0, nhưng cách ngược lại là cho chúng tôi một số vấn đề. Điều này là dễ hiểu, nhưng có cách nào để giải quyết vấn đề này không? Họ đang chạy với các hồ bơi ứng dụng khác nhau ... chúng ta có thể có thư mục ảo bỏ qua web.config của trang web và truy cập trực tiếp vào machine.config không?Tôi có thể lưu trữ thư mục ảo 2.0 net trong trang asp.net 4.0 không?

Chúng tôi đang nhận được lỗi sau:

Parser Error Message: Unrecognized attribute 'targetFramework'. Note that attribute names are case-sensitive. 

Source Error: 

Line 22: </appSettings> 
Line 23: <system.web> 
Line 24:  <compilation debug="true" targetFramework="4.0" /> 
Line 25:  <customErrors defaultRedirect="url" mode="RemoteOnly"> 
Line 26:  <error statusCode="404" redirect="~/404.aspx"/> 
+0

có thể trùng lặp của [Có thể hoàn toàn phủ nhận một web.config "cao hơn" trong một thư mục con?] (http: //stackoverflow.com/questions/783732/is-it-possible-to-completely-negate-a-higher-web-config-in-a-subfolder) – Merritt

Trả lời

10

Thêm dòng sau vào web.config gốc của bạn

<location path="." inheritInChildApplications="false"> 
+0

Như tôi đã lưu ý trong câu trả lời của tôi, ' 'chỉ thị không thể được sử dụng để ghi đè' '. Dịch: không may, điều này sẽ không hoạt động trong mọi tình huống. – Josh

5

Is it possible to completely negate a "higher" web.config in a subfolder?

Trong web.config gốc của bạn:

<location path="." inheritInChildApplications="false"> 
    <system.web>  
     <compilation debug="true" targetFramework="4.0" /> 
    </system.web> 
    </location> 

(Ben đã làm điều này trước tiên, nhưng tôi sẽ để lại câu trả lời này vì nó chỉ ra một vài lựa chọn thay thế)

+0

Cảm ơn câu trả lời và thông báo trùng lặp. – Merritt

+0

Ồ, tôi sẽ cho anh ta tín dụng sau đó. – Merritt

1

Đây là vấn đề kế thừa web.config và bạn không thể khắc phục tất cả các vấn đề với chỉ thị <location>.

Chúng tôi đã nhận được các lỗi tương tự về chỉ thị cấu hình trùng lặp trên một trong các ứng dụng của chúng tôi. Sau khi điều tra, có vẻ như đó là vì this issue.

Tóm lại, trang web gốc của chúng tôi là ASP.NET 3.5 (là 2.0 với các thư viện cụ thể được thêm) và chúng tôi có một ứng dụng con là ASP.NET 4.0.

thừa kế web.config khiến ứng dụng con ASP.NET 4.0 thừa kế tệp web.config của ứng dụng mẹ ASP.NET 3.5.

Tuy nhiên, web.config toàn cầu của ứng dụng ASP.NET 4.0 (hoặc "root"), nằm ở C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Config \ web.config và C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Config \ web.config (tùy thuộc vào bitness của bạn), đã chứa các phần cấu hình có trong web.config của ứng dụng cụ thể của ứng dụng .NET 3.5.

Ứng dụng ASP.NET 4.0 sau đó cố gắng hợp nhất với nhau ASP.NET root web.config và web.config mẹ (một cho ứng dụng ASP.NET 3.5) và chạy vào các bản sao trong <configSections> nút.

Không thể sử dụng chỉ thị <location> để ngăn kế thừa các mục nhập <configSections>. Giải pháp duy nhất tôi đã có thể tìm thấy là để loại bỏ các configSections từ web.config cha mẹ, và sau đó một trong hai

  1. Xác định mà bạn không cần đến chúng trong ứng dụng gốc của bạn, hoặc
  2. Nâng cấp ứng dụng cha mẹ để ASP.NET 4.0 (do đó, nó có quyền truy cập vào configSections gốc của web.config)
Các vấn đề liên quan