2014-07-24 8 views
6

wir unsere Web-Anwendungen von .NET-Framework 3,5-4,5Fehler während der Migration .NET Framework 3,5-4,5

Auf unserer Entwicklung Maschinen migrieren, verwenden wir VS2012 und Ausführen von Windows 7 OS

In diesem Prozess wir haben die folgenden Fehler

die Basisklasse enthält das Feld ‚htmlTag‘, aber seine Art (System.Web.UI.HtmlControls.HtmlGenericControl) ist nicht mit der Art der Steuerung (System.Web.UI kompatibel. HtmlControls.HtmlElement)

Die entsprechende HTML ist

<html xmlns="http://www.w3.org/1999/xhtml" class="no-js" runat="server" id="htmlTag"> 

Und der entsprechende Designer-Code ist (.cs.designer Datei)

protected global::System.Web.UI.HtmlControls.HtmlGenericControl htmlTag; 

Voll Stack-Trace hier ..

System.Web .HttpParseException (0x80004005): Die Basisklasse enthält das Feld 'htmlTag', aber ihr Typ (System.Web.UI.HtmlControls.HtmlGenericControl) ist nicht kompatibel mit mit dem Steuerelementtyp (System.Web.UI.HtmlControls.HtmlElement). bei System.Web.Compilation.BaseTemplateCodeDomTreeGenerator.BuildFieldDeclaration (Control builder) bei System.Web.Compilation.BaseTemplateCodeDomTreeGenerator.BuildSourceDataTreeFromBuilder (Control Builder, Boolean fInTemplate, Boolean topLevelControlInTemplate, Property PSE) an System.Web.Compilation.BaseTemplateCodeDomTreeGenerator.BuildSourceDataTreeFromBuilder (Control Builder , Boolean fInTemplate, Boolean topLevelControlInTemplate, PropertyEntry pse) bei System.Web.Compilation.TemplateControlCodeDomTreeGenerator.BuildMiscClassMembers() at System.Web.Compilation.PageCodeDomTreeGenerator.BuildMiscClassMembers() bei System.Web.Compilation.BaseCodeDomTreeGenerator.BuildSourceDataTree() at System.Web .Compilation.BaseCodeDomTreeGenerator.GetCodeDomTree (CodeDomProvider CodeDomProvider, StringResourceBuilder stringResourceBuilder, VirtualPath virtualPath) bei System.Web.Compilation.BaseTemplateBuildProvider.GenerateCode (Assemblyassembly) bei System.Web.Co mpilation.AssemblyBuilder.AddBuildProvider (Buildprovider Buildprovider) bei System.Web.Compilation.AssemblyBuilder.AddBuildProvider (Buildprovider Buildprovider) bei System.Web.Compilation.BuildProvidersCompiler.ProcessBuildProviders() bei System.Web.Compilation.BuildProvidersCompiler.PerformBuild() bei System. Web.Compilation.BuildManager.CompileWebFile (VirtualPath virtualPath) bei System.Web.Compilation.BuildManager.GetVPathBuildResultInternal (VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate) bei System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert (HttpContext-Kontext, VirtualPath virtualPath, boolesches noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate) bei System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory (VirtualPath virtualPath, HttpContext-Kontext, Boolean allowCrossApp, Boolean throwIfNotFound) bei Syste m.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath (VirtualPath virtualPath, Typ requiredBaseType, Httpcontext Kontext, Boolean allowCrossApp) bei System.Web.UI.PageHandlerFactory.GetHandlerHelper (Httpcontext Kontext, String request, VirtualPath virtualPath, String physicalPath) bei System.Web. HttpApplication.MaterializeHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at System.Web.HttpApplication.ExecuteStep (IExecutionStep Schritt, Boolean & completedSynchronously) Fehler Methode: Void AddBuildProvider (System.Web.Compilation.Buildprovider) Hilfe-Link:

um dieses Problem zu beheben wir die Schritte unter diesem Link http://support.microsoft.com/kb/941824/en-us

Im Wesentlichen gegeben folgten wir einfach den HTML schneiden und fügen Sie ihn zurück .. und den Designer-Code regeneriert wird wie folgt

Das sieht logisch aus, um das Problem zu beheben, und es funktionierte auch auf wenigen Maschinen, aber die gleiche Lösung brach Code auf anderen Entwickler-Maschinen und vor allem Code für unsere Produktion Web-Server. Bitte beachten Sie, dass Windows Server 2008 R2 Datacenter auf unserem Produktionsserver ausgeführt wird und wir .Net Framework 4.5 auf dem Computer installiert haben. Im Folgenden ist der Fehler, den wir nach dem Wechsel bekommen

Die Basisklasse enthält das Feld ‚htmlTag‘, aber seine Art (System.Web.UI.HtmlControls.HtmlElement) ist nicht kompatibel mit der Art der Steuerung (Systems. Web.UI.HtmlControls.HtmlGenericControl)

Sie sehen die Fehlermeldung in diesem Beitrag auf die erste Fehlermeldung direkt gegenüber ist

in jenen Maschinen, die jetzt Fehler, wenn wir die Art der Kontrolle nur verlassen zu HTMLGenericControl der Fehler verschwindet

Wir haben versucht, das .net Framework bezogenen Service Pack auf den Maschinen zu vergleichen, die gegen die, die arbeiten, die nicht und wir gar nicht bemerkte nichts wirklich, die möglicherweise den Fehler

Diese Situation nicht akzeptabel führen könnten, da wir Teams aus ganz ausgebreitet haben mehrere geografische Standorte und wir können nicht mit jedem von ihnen über die Art und Weise, wie sie ihre lokale Umgebung reparieren können, koordinieren. Mehr über uns nicht beim Check-in dieser Datei mit Änderungen kann, da es für viele Menschen brechen und die Freigabe dieser die Produktion wird schwierig sein, zu

Könnten Sie uns bitte helfen, dieses Problem zu beheben

+0

‚wir haben .Net Framework 4.5 auf dem Rechner installiert '-> Aber ist der AppPool für die App tatsächlich so konfiguriert? (zB wie in VS, wo Sie eine CLR auswählen, um gegen Sie zu kompilieren wählen Sie eine CLR aus, auf der auf der Serverseite ausgeführt werden soll). (Application Pool - Wählen Sie die richtige - Grundeinstellungen -.Net Framework Version – tolanj

+0

In IIS ist bereits die .NET Runtime-Version 4.0 –

+0

haben Sie überprüft web.config Zeilen eingeben? – tolanj

Antwort

2

Endlich fand ich die Ursache des Problems

Got zugeben, dass es mein Fehler und eine peinlich einfach war fix

standardmäßig als Zielrahmen für ein Projekt auf 4,5 geändert wird, aktualisiert sie die web.config wie unten

<system.web> 
    <compilation debug="true" targetFramework="4.5"/> 
    <pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID"/> 
</system.web> 

Zuerst wussten wir nicht, dass VS die web.config ändern würde, wenn wir auf Version 4.5 upgraden. Zweitens ist unsere Web.Config eine große Datei und selbst wenn 1 Zeile geändert wird, zeigt sie leider die gesamte Datei als geändert an. Wir werden also niemals die Datei zur Quellcodeverwaltung einchecken, es sei denn, wir ändern sie explizit von Hand. Daher wurde bei einigen Computern das targetFramework-Attribut auf 4,5 gesetzt, während andere es nicht hatten. Dies erklärt das inkonsistente Verhalten auf verschiedenen Rechnern. Wir brauchen wahrscheinlich die web.config die Art und Weise Visual Studio tut zu formatieren, wenn es automatisch Änderungen macht und überprüfen Sie in Quelle cnotrol dieses Problem in Zukunft

Grüße

Siva zu vermeiden

+0

Nützlich. Vielen Dank. –

Verwandte Themen