2014-07-25 34 views
6

Mam aplikację sieci web .Net, która zawiera ustawienie web.config, aby wymusić na przeglądarce Internet Explorer wyłączenie trybu zgodności i użycie najnowszej wersji IE dostępny:Zastąpienie ustawienia zgodnego z X-UA w pliku web.config dla określonych stron i ramek

<system.webServer> 
    <httpProtocol> 
    <customHeaders> 
     <add name="X-UA-Compatible" value="IE=Edge" /> 
    </customHeaders> 
    </httpProtocol> 
</system.webServer> 

Jednak ta aplikacja zawiera starszą stronę, która wymaga trybu zgodności. W moich testach będzie on poprawnie wyświetlany tylko wtedy, gdy X-UA-Compatible ustawiono na IE=5.

Czy istnieje sposób na przesłonięcie ustawienia web.config dla pojedynczej strony?

Wśród wielu rzeczy próbowałem, które nie pracowały:

  • Łącznie <meta http-equiv="X-UA-Compatible" content="IE=5" /> na samej stronie, jako pierwszy tag po <head>
  • Dodawanie X-UA-Compatible:IE=5 do nagłówków odpowiedzi. Niestety, wysyła również nagłówek X-UA-Compatible:IE=Edge, a ten "wygrywa".
  • Zmiana numeru <!DOCTYPE >. Próbowałem wszystkich różnych opcji.
  • Dodawanie komentarza przed DOCTYPE
  • Ponowne napisanie strony, aby była zgodna ze standardami. Jest to oczywiście najlepsze rozwiązanie, ale dana strona jest złożoną aplikacją do mapowania, a jej ponowne zapisanie zajmie kilka miesięcy.

Aktualizacja
Gdy zadzwoniłem to „złożony wniosek mapping” Powinienem powiedzieć „gniazdo szczura ramek i tabel.” Okazuje się, że część ramy była odpowiednia dla rozwiązania.

+1

Czy próbowałeś najpierw usunąć istniejący nagłówek zgodny z X-UA, zanim dodasz drugi z kolekcji nagłówków? Czy próbowałeś również całkowicie usunąć doctype? –

+0

Próbowałem już obu tych sugestii, ale Twoja sugestia, by wyczyścić nagłówki, zachęciła mnie do wypróbowania tego samego na wszystkich klatkach, więc dziękuję! – xcer

Odpowiedz

8

I wreszcie, aby to naprawić poprzez umieszczenie tego kodu w Page_Load() z każdej strony, która jest częścią zestawu ramek na tej stronie (około łącznie kilkanaście stron).

Response.ClearHeaders(); 
Response.AddHeader("X-UA-Compatible", "IE=5"); 

Przyjęłam, że strony zestawu ramek odziedziczą ustawienie ze strony głównej, ale najwyraźniej nie. Po prostu umieszczenie tego na stronie głównej nie działało, musiałem umieścić to na każdej stronie/ramce.

1

Można spróbować użyć znacznika lokalizacji ...

<location path="YourPage.aspx"> 
    <system.webServer> 
     <httpProtocol> 
      <customHeaders> 
      <add name="X-UA-Compatible" value="IE=5" /> 
      </customHeaders> 
     </httpProtocol> 
    </system.webServer> 
</location> 
+2

Próbowałem tego, ale nie mogłem znaleźć składni, która pozwoliłaby mi ustawić jako domyślną dla reszty teren. Jak dołączyć oba? – xcer