5

W moim web.config Mam następujące ustawienia:Dlaczego program Visual Studio narzeka na moją konfigurację detektorów śledzenia web.config?

<system.diagnostics> 
    <trace> 
    <listeners> 
     <add name="AzureDiagnostics" 
      type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"> 
      <filter type="" /> 
     </add> 
    </listeners> 
    </trace> 
</system.diagnostics> 

który jest tak samo jak w przykładzie MSDN here:

<system.diagnostics> 
    <trace> 
    <listeners> 
     <add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, 
      Microsoft.WindowsAzure.Diagnostics, 
      Version=1.0.0.0, 
      Culture=neutral, 
      PublicKeyToken=31bf3856ad364e35" 
      name="AzureDiagnostics"> 
      <filter type="" /> 
     </add> 
    </listeners> 
</trace> 

Jeszcze Visual Studio podkreśli type atrybutów wewnątrz <filter type="" i kiedy poruszam myszą, mówi: the 'type' attribute is not allowed. Jeśli spróbuję użyć technologii IntelliSense, aby znaleźć to, co dozwolone, oferuje ona: lockItem, lockElements, lockAttributes, lockAllElementsExcept i lockAllAttributesExcept.

Dlaczego program Visual Studio nie jest podobny do type wewnątrz filter?

+0

Czy kod się kompiluje i czy działa? Jedyny problem polega na tym, że Visual Studio narzeka? – DOK

+0

@DOC: Wygląda na to, że działa, ale nie do końca rozumiem, co ten typ powinien zrobić i dlaczego VS narzeka. – sharptooth

+0

Czy używasz ReSharper? Jest tam błąd, którego jeszcze nie udało się naprawić. –

Odpowiedz

8

Visual Studio używa schematów do weryfikacji XML w plikach konfiguracyjnych. W tym przypadku nie widzi on atrybutu typu zdefiniowanego dla elementu filtru w schemacie. Jest to prawdopodobnie tylko niedopatrzenie/błąd w schemacie, ponieważ korzystanie z konfiguracji filtru wyraźnie tego wymaga i nie będzie bez niego działać. Nie dotyczy to w ogóle Windows Azure.

Jeśli otworzysz plik app.config/web.config i zaznaczysz okno właściwości, zobaczysz właściwość Schemas. Są to wszystkie schematy używane do sprawdzania poprawności pliku konfiguracyjnego i jest ich kilka. Schematem zainteresowania tutaj jest DotNetConfig.xsd (na moim komputerze jest pod C: \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ xml \ Schemas \ 1033 \ DotNetConfig.xsd przy użyciu VS 2012). Jeśli znasz XSD, możesz to otworzyć i jeśli przejdziesz do definicji elementu (configuration/system.diagnostics/trace/listeners/ListenerElement/filter), zobaczysz, że żaden element typu nie jest wskazany. Jednak jeśli spojrzysz na element filtra pod współdzielonymi detektorami (konfiguracja/system.diagnostics/sharedListeners/ListenerElement/filter), typ atrybutu jest tam i jest wymagany.

Jeśli korzystałeś z poniższej konfiguracji, nie zobaczysz podkreślenia w VS, ponieważ typ jest oczekiwany pod filtrem w sekcji wspólnych nasłuchiwania. Jeszcze raz podkreślę, że podkreślenie tutaj naprawdę nie ma znaczenia, to tylko VS, mówiąc, że nie powinieneś umieszczać atrybutu type pod filtrem, ale jest to wyraźnie wymagane, jeśli chcesz zdefiniować filtr pod śladem słuchaczy i jest po prostu błędem w schemacie. Nie martwiłbym się tym.

<system.diagnostics> 
     <sharedListeners> 
     <add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=1.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
      name="AzureDiagnostics"> 
      <filter type="" /> 
     </add> 

     </sharedListeners> 
     <trace> 
      <listeners> 
       <add name="AzureDiagnostics" /> 
      </listeners> 
     </trace> 
    </system.diagnostics> 
Powiązane problemy