2015-01-23 26 views
5

tôi đã tạo ra một phong tục System.Configuration.ConfigurationSection mà tôi đang giữ trong một tập tin cấu hình riêng biệt và bao gồm nó vào web.config của tôi qua 'configSource="MyCustomConfigFile.config"'Không nhận ra thuộc tính 'xmlns' trong tập tin tùy chỉnh .config

Tôi cũng đã tạo ra một .xsd lược đồ cho tệp cấu hình tùy chỉnh để thêm một số tính năng như xác thực lược đồ/intellisense - hoạt động tốt.

Khi cố gắng để khởi động ứng dụng (nào được lưu trữ trong IIS8, NET 4.5.1) Tôi nhận được lỗi sau:

Configuration Error Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately.

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

Source Error:

Line 1: <?xml version="1.0" encoding="utf-8" ?>

Line 2: <identityServer xmlns="http://myCustomNamespace.xsd">

Thành thật mà nói, tôi ngạc nhiên - có thể bất cứ ai cho tôi biết cách khắc phục điều này mà không xóa xmlns để tôi có thể giữ lại xác thực lược đồ/intellisense?

Trả lời

11

Sử dụng thông tin tìm thấy here Nó trở nên rõ ràng rằng các phân tích cú pháp là không để deserialize phần cấu hình do thực tế rằng phần cấu hình là không nhận thức được thuộc tính 'xmlns' - đó thực sự có ý nghĩa HOÀN HẢO.

Để khắc phục điều này bạn có thể thêm dòng sau vào phần cấu hình tùy chỉnh của bạn trong C#:

public class MyCustomConfigurationSection 
    { 
private const string XmlNamespaceConfigurationPropertyName = "xmlns"; 
    [ConfigurationProperty(XmlNamespaceConfigurationPropertyName, IsRequired = false)] 
      public string XmlNamespace 
      { 
       get 
       { 
        return (string)this[XmlNamespaceConfigurationPropertyName]; 
       } 
       set 
       { 
        this[XmlNamespaceConfigurationPropertyName] = value; 
       } 
      } 
    } 

này sửa chữa vấn đề hoàn toàn.

+0

Ngoài ra, bạn nên thêm thuộc tính cho "xmlns: xsi" và "xsi: schemaLocation" nếu bạn muốn chỉ định vị trí của lược đồ xsd của mình. – Rail

+0

Bạn có thể giải thích về điều đó không? – Maciek

+0

Đây có phải là cách duy nhất bạn tìm thấy để khắc phục vấn đề này không? Tôi có nghĩa là điều này hoạt động tốt, nhưng có vẻ như phải có một cách dễ dàng hơn! – crush

-1

Tôi chưa gặp sự cố cụ thể này nhưng bạn có thể thử xóa thư mục "obj" trong dự án của bạn và xây dựng lại như được đề xuất trong bài đăng sau.
Web.config transformation: Unrecognized attribute 'xmlns:xdt'. Note that attribute names are case-sensitive

+0

đã thử rằng - không có hiệu lực – Maciek

+0

@Peter Evans - Tôi thấy rằng bạn muốn hữu ích và đó là ý tưởng đúng. Nếu bạn đang đưa ra đề xuất có thể giúp người đó và không được xác định rõ ràng về giải pháp thực tế - bạn có thể muốn đăng chúng dưới dạng nhận xét cho câu hỏi gốc - nơi người có vấn đề và xác nhận/từ chối đề xuất của bạn Hữu ích. Đăng những nhận xét này lên câu hỏi giúp làm rõ tình hình và sẽ không có khả năng khiến bạn nhận được phiếu bầu. Hy vọng điều này là hữu ích cho bạn. – condiosluzverde

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