web-dev-qa-db-fra.com

'WebForm_DoPostBackWithOptions' n'est pas défini dans l'aperçu IE11

IE11 arrive. Je viens d'installer la version de prévisualisation du développeur. Cependant, si je lance une partie de mon application Web et que j'ai l'erreur WebForm_DoPostBackWithOptions n'est pas défini.

L'erreur est apparue lorsque je jouais avec la variable automatique DropDownList.

De plus, il semble qu'il y ait eu un problème similaire avec IE10 auparavant:

http://www.hanselman.com/blog/BugAndFixASPNETFailsToDetectIE10CausingDoPostBackIsUndefinedJavaScriptErrorOrMaintainFF5ScrollbarPosition.aspx

24
user2376512

Enfin, j'ai trouvé la solution, Merci le conseil de Scott Hunter.

Si vous souhaitez résoudre le problème IE11, installez le correctif ci-dessous.

6
user2376512

J'ai eu un problème similaire avec Internet Explorer 11 qui n'a pas été détecté correctement par .NET 4.0 Framework. Voici comment j'ai résolu le problème:

L'installation des correctifs suggérés n'a pas fait l'affaire. Après avoir approfondi le problème, j'ai constaté que, même si le correctif http://support.Microsoft.com/kb/2836939 est installé sur le serveur, le navigateur est toujours reconnu comme Mozilla avec la version 0.0 sur le serveur. Après des recherches supplémentaires, j'ai constaté que si vous avez un fichier .browser dans le dossier app_browsers de votre site, la version détectée sur le serveur est incorrecte, à savoir Mozilla 0.0.

Pour contourner le problème, j'ai créé un fichier .browser personnalisé dans le répertoire app_browsers avec le contenu suivant:

<browsers>
  <browser id="IE11" parentID="Mozilla">
    <identification>
      <userAgent match="Trident\/7.0; rv:(?'version'(?'major'\d+)(\.(?'minor'\d+)?)(?'letters'\w*))(?'extra'[^)]*)" />
      <userAgent nonMatch="IEMobile" />
    </identification>
    <capture>
      <userAgent match="Trident/(?'layoutVersion'\d+)" />
    </capture>
    <capabilities>
      <capability name="browser"              value="IE" />
      <capability name="layoutEngine"         value="Trident" />
      <capability name="layoutEngineVersion"  value="${layoutVersion}" />
      <capability name="extra"                value="${extra}" />
      <capability name="isColor"              value="true" />
      <capability name="letters"              value="${letters}" />
      <capability name="majorversion"         value="${major}" />
      <capability name="minorversion"         value="${minor}" />
      <capability name="screenBitDepth"       value="8" />
      <capability name="type"                 value="IE${major}" />
      <capability name="version"              value="${version}" />
    </capabilities>
  </browser>

  <!-- Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11,0) like Gecko -->
  <browser id="IE110" parentID="IE11">
    <identification>
      <capability name="majorversion" match="11" />
    </identification>

    <capabilities>
      <capability name="ecmascriptversion"    value="3.0" />
      <capability name="jscriptversion"       value="5.6" />
      <capability name="javascript"           value="true" />
      <capability name="javascriptversion"    value="1.5" />
      <capability name="msdomversion"         value="${majorversion}.${minorversion}" />
      <capability name="w3cdomversion"        value="1.0" />
      <capability name="ExchangeOmaSupported" value="true" />
      <capability name="activexcontrols"      value="true" />
      <capability name="backgroundsounds"     value="true" />
      <capability name="cookies"              value="true" />
      <capability name="frames"               value="true" />
      <capability name="javaapplets"          value="true" />
      <capability name="supportsCallback"     value="true" />
      <capability name="supportsFileUpload"   value="true" />
      <capability name="supportsMultilineTextBoxDisplay" value="true" />
      <capability name="supportsMaintainScrollPositionOnPostback" value="true" />
      <capability name="supportsVCard"        value="true" />
      <capability name="supportsXmlHttp"      value="true" />
      <capability name="tables"               value="true" />
      <capability name="supportsAccessKeyAttribute"    value="true" />
      <capability name="tagwriter"            value="System.Web.UI.HtmlTextWriter" />
      <capability name="vbscript"             value="true" />
    </capabilities>
  </browser>
</browsers>

L'article suivant suggère une approche similaire: doPostback échouant dans IE 11+ Windows 8.1

Je voudrais préciser que le problème ne se produit qu'avec .NET 4.0. Avec .NET 4.5, le navigateur et sa version sont correctement détectés.

39
user2919107

J'ai essayé tous les correctifs répertoriés sur Internet, y compris ceux énumérés ici. La seule chose qui semblait réellement fonctionner était l'installation de .NET Framework 4.5 sur le serveur.

Obtenez-le ici: http://www.Microsoft.com/en-us/download/details.aspx?id=30653

J'espère que cela économisera à quelqu'un quelques-unes des heures que j'ai perdues avec celui-ci.

6
ckozl

Si vous avez du mal à comprendre pourquoi la réponse de user2919107 ci-dessus (placer un fichier .browser personnalisé pour IE11 dans votre dossier App_Browsers) ne fonctionne pas, essayez de toucher un fichier .browser existant dans votre dossier App_Browsers.

La création/copie simple du fichier .browser IE11 ne fonctionne pas. Vous devez toucher un fichier .browser existant pour que le contenu d'App_Browsers soit recompilé et pris en compte.

5
Panagiotis Poulos

Oui, il s'agit du même problème central, qui a été résolu par le correctif ASP.NET de juin 2013. Voir http://blogs.msdn.com/b/ieinternals/archive/2013/09/21/internet-Explorer-11-user-agent-string-ua-string-sniffing-compatibility-with-gecko-webkit .aspx

1
EricLaw

J'avais aussi ce problème. J'ai tout essayé avant d'installer .NET 4.5. Je cherchais simplement une solution à court terme avant de procéder à la mise à niveau vers .NET 4.5. Panagiotis Poulos avait raison sur le nouveau fichier .browser. J'ai touché un fichier .browser existant et mon nouveau fichier IE .browser est maintenant reconnu. Tout fonctionne à nouveau aussi loin que je peux dire.

En bref, suivez this guy instructions, mais si vous essayez l’approche .browser, n’oubliez pas de toucher un fichier .browser existant après avoir téléchargé votre propre fichier .browser.

0
bowserm

Trouvé un correctif temporaire à cela. 

J'ai essayé d'appliquer le correctif mais je n'ai pas pu installer le correctif. L'erreur était: kb2600088 ne s'applique pas ou est bloqué par une autre condition de votre ordinateur. Probablement à cause de .NET 4.5, j’ai cherché dans google mais je ne voulais pas désinstaller .NET 4.5, je n’ai donc pas suivi. 

Donc, pour contourner le problème initial, démarrez IE11 et accédez à la console du développeur en appuyant sur F12. Sous l'onglet "Emulation", définissez le mode document sur "10" et sous la chaîne de l'agent utilisateur, définissez également sur "10". Je crois qu'il émule IE 10, ce qui fonctionne parfaitement sans avoir à rencontrer ce bogue. 

Ceci est seulement un travail autour. Pas une solution. J'espère que cela aidera ceux qui essaient de faire le travail.

0
f0rfun

Si vous utilisez Windows 2003 et que vous ne parvenez pas à appliquer de correctif logiciel; essayez de définir la propriété ClientTarget de l'objet Page dans le Page_Init de votre page ASP.NET sur "niveau supérieur".

protected void Page_Init(object sender, EventArgs e)
{
    Page.ClientTarget = "uplevel";
}
0
Folkert

Si vous avez téléchargé IE 11 mais utilisez le navigateur IE d'origine fourni avec Windows, l'agent utilisateur du navigateur est légèrement différent et le la réponse la plus votée ne fonctionnera pas.

Il suffit de changer cette ligne:

<userAgent match="Trident\/7.0; rv:(?'version'(?'major'\d+)(\.(?'minor'\d+)?)(?'letters'\w*))(?'extra'[^)]*)" />

pour ça:

<userAgent match="Trident\/7.0;(?'someGarbage'[^'rv:']*) rv:(?'version'(?'major'\d+)(\.(?'minor'\d+)?)(?'letters'\w*))(?'extra'[^)]*)" />
0
Pouki