2010-05-14 27 views
22

Tôi đã chia nhỏ tệp web.config rất khó sử dụng thành các tệp riêng lẻ cho một số phần (ví dụ: connectionStrings, xác thực, trang, v.v.) bằng cách sử dụng thuộc tính configSource.web.config, configSource và "Phần tử 'xxx' không được khai báo" cảnh báo

Điều này hoạt động tốt, nhưng các tệp xml riêng lẻ chứa phần 'đoạn mã' gây ra cảnh báo trong VS.

Ví dụ, một file có tên roleManager.config được sử dụng cho phần quản lý vai trò, và trông như thế này:

<roleManager enabled="false"> 
</rolemanager> 

Tuy nhiên tôi nhận được một squiggle xanh dưới các yếu tố roleManager trong VS, và cảnh báo sau : The 'roleManager' element is not declared

Tôi đoán đây là việc cần làm với xml và lược đồ hợp lệ, v.v. Có cách nào dễ dàng để khắc phục sự cố này không? Cái gì tôi có thể thêm vào các tập tin cá nhân?

Cảm ơn

P.S. Tôi đã nghe nói rằng đó là thực tế xấu để phá vỡ các tập tin web.config ra như thế này. Nhưng thực sự không hiểu tại sao - ai có thể thắp sáng tôi được không?

+5

Tôi không hiểu tại sao nó có thể là hành vi xấu. Xin lưu ý rằng việc thay đổi các tệp .config này sẽ KHÔNG dẫn đến việc khởi động lại ứng dụng Web (như nếu bạn đã chỉnh sửa chính web.config) – Timores

+0

Không nhận ra điều đó - cảm ơn, rất tốt để biết. – UpTheCreek

+0

Một điều thú vị về việc sử dụng thuộc tính configSource là nếu bạn phải chuyển mã của mình cho người khác để đặt mã bên trong máy chủ của công ty họ, họ có thể dễ dàng thấy những gì họ cần thay đổi trong cấu hình web (connectionStrings, v.v ...) cho môi trường của họ. –

Trả lời

2

Tôi nghĩ rằng bạn nhận được các vệt màu xanh vì giản đồ tệp web.config của bạn không khai báo các phần cấu hình tùy chỉnh mà bạn đã 'chia nhỏ' thành các tệp riêng lẻ.

Khi điều tra điều này, tôi thấy rằng một số giải pháp của tôi có cùng một vấn đề, nhưng phần cấu hình được cung cấp từ microsoft KHÔNG có tiếng cười khúc khích. ví dụ: chúng tôi đã trích xuất các ứng dụng và kết nối vào các tệp của riêng chúng và chúng không nhận được các vần đề, nhưng các tùy chỉnh của chúng tôi thực hiện.

Tôi đã cố gắng xem lược đồ microsoft tại schemas.microsoft.com/.netconfiguration/v2.0, nhưng tôi nhận được 404 khi cố gắng tải xuống.

Những gì tôi đang cố gắng nói là nếu bạn nhận được một bản sao của lược đồ MS và thay đổi nó để bao gồm các tập tin cấu hình bên ngoài của bạn, bạn sẽ có thể loại bỏ các vệt nguệch ngoạc!

HTH, Lance

+0

Cảm ơn lance Tôi sẽ xem xét điều đó. Tôi đã nhận thấy một cái gì đó tương tự với một số phần không gây ra vấn đề. Dường như với tôi rằng các phần nằm ngay bên dưới phần tử (root) không có vấn đề (chẳng hạn như kết nối), trong khi các phần nằm dưới một cấp từ gốc (chẳng hạn như roleManager, dưới cấu hình < > – UpTheCreek

26

Tìm kiếm một cách giải quyết vấn đề này bằng Tuỳ chỉnh tập tin cấu hình, tôi thấy giải pháp này. Không biết nếu là đúng.

Vấn đề là VS không thể tìm thấy lược đồ để xác thực .config (xml) của bạn. Nếu bạn đang sử dụng các phần tử cấu hình "tự nhiên" hoặc khi bạn tạo các tệp .config tùy chỉnh, bạn phải đặt mọi tài liệu xml một lược đồ.

Theo mặc định (trong VS9 chẳng hạn) tất cả các tệp xml sử dụng \ Microsoft Visual Studio 9.0 \ Xml \ Schemas \ DotNetConfig.xsd nhưng bạn có thể thêm nhiều lược đồ để sử dụng.

Trước khi gán một lược đồ, bạn phải tạo nó.

Để tạo một giản đồ mới dựa trên tùy chỉnh của riêng bạn.cấu hình:

  1. mở tùy chỉnh của bạn cấu hình tập tin
  2. trong thanh menu XML-> Create Schema
  3. tiết kiệm nó

Để gán schema của bạn:

  1. mở của bạn tệp cấu hình tùy chỉnh
  2. trong bảng thuộc tính: click vào nút browse [..]
  3. thiết lập cột 'Sử dụng' để schema vừa tạo của bạn

bạn có thể gán như nhiều bạn muốn. hoặc có một lược đồ cho tất cả các tệp .config tùy chỉnh khác nhau của bạn

(Xin lỗi, nhưng tiếng Anh của tôi không tốt)

+3

Làm việc tốt, BTW, VS2012 tự động thêm lược đồ mới được tạo vào danh sách các lược đồ được gán cho tệp XML của bạn –

+0

Điều này cũng loại bỏ các lỗi lược đồ lạ được báo cáo trong Web.config của tôi cho dự án asmx SOAP. –

+0

Để gán lược đồ của bạn Trong VS 2015, Trình đơn trên cùng/Xml/Lược đồ .../Thêm .. sau đó chọn tệp xsd được tạo trên bước đầu tiên. – hkutluay

Các vấn đề liên quan