2015-01-23 14 views
5

ho creato una consuetudine System.Configuration.ConfigurationSection che sto tenendo in un file di configurazione separato e includerlo nel mio web.config tramite 'configSource="MyCustomConfigFile.config"'attributo 'xmlns' non riconosciuti nel file personalizzato .config

Ho anche creato un .xsd schema per il file di configurazione personalizzato per aggiungere alcune cose come la validazione dello schema/intellisense - che funziona bene.

Quando si tenta di avviare l'applicazione (che è ospitato in IIS8, NET 4.5.1) sto ottenendo il seguente errore:

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">

Per essere onesti, sono sorpreso - può chiunque dimmi come risolvere questo problema senza rimuovere xmlns in modo che possa mantenere la convalida/intellisense dello schema?

risposta

11

Utilizzando le informazioni trovate here 'diventato chiaro che il parser non riesce a deserializzare la sezione di configurazione a causa del fatto che la sezione di configurazione non è a conoscenza l'attributo 'xmlns' - il che rende in realtà perfettamente senso.

Per risolvere questo problema è possibile aggiungere il seguente alla sezione di configurazione personalizzata in 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; 
       } 
      } 
    } 

questo risolve completamente il problema.

+0

Inoltre, è necessario aggiungere proprietà per "xmlns: xsi" e "xsi: schemaLocation" se si desidera specificare la posizione dello schema xsd. – Rail

+0

Puoi approfondire per favore? – Maciek

+0

È questo l'unico modo per risolvere questo problema? Voglio dire che funziona bene, ma sembra che ci dovrebbe essere un modo più semplice! – crush

-1

Non ho riscontrato questo particolare problema ma si può provare a eliminare la cartella "obj" nel progetto e la ricostruzione come suggerito nel seguente post.
Web.config transformation: Unrecognized attribute 'xmlns:xdt'. Note that attribute names are case-sensitive

+0

provato già - nessun effetto – Maciek

+0

@Peter Evans - Vedo che vuoi essere utile, e questa è l'idea giusta. Se stai formulando suggerimenti che potrebbero aiutare la persona e non sono passaggi ben definiti per la soluzione reale, potresti volerli postare come commenti alla domanda originale - dove la persona con il problema e confermare/negare che il tuo suggerimento è utile. Pubblicare questi commenti sulla domanda aiuta a chiarire la situazione e probabilmente non ti farà guadagnare voti. Spero che questo ti sia d'aiuto. – condiosluzverde

Problemi correlati