stiamo migrando le nostre applicazioni Web da .NET framework 3,5-4,5errore durante la migrazione .NET framework 3,5-4,5
sulle nostre macchine di sviluppo, stiamo usando VS2012 ed eseguire Windows 7 OS
In questo processo abbiamo ottenuto il seguente errore
la classe di base include il campo 'htmlTag', ma il suo tipo (System.Web.UI.HtmlControls.HtmlGenericControl) non è compatibile con il tipo di controllo (System.Web.UI. HtmlControls.HtmlElement)
Il corrispondente HTML è
<html xmlns="http://www.w3.org/1999/xhtml" class="no-js" runat="server" id="htmlTag">
E il codice corrispondente è progettista (file .cs.designer)
protected global::System.Web.UI.HtmlControls.HtmlGenericControl htmlTag;
completa dello stack trace qui ..
System.Web .HttpParseException (0x80004005): la classe base include il campo 'htmlTag', ma il suo tipo (System.Web.UI.HtmlControls.HtmlGenericControl) non è compatibile w con il tipo di controllo (System.Web.UI.HtmlControls.HtmlElement). a System.Web.Compilation.BaseTemplateCodeDomTreeGenerator.BuildFieldDeclaration (ControlBuilder costruttore) a System.Web.Compilation.BaseTemplateCodeDomTreeGenerator.BuildSourceDataTreeFromBuilder (ControlBuilder costruttore, booleano fInTemplate, booleano topLevelControlInTemplate, PropertyEntry PSE) al System.Web.Compilation.BaseTemplateCodeDomTreeGenerator.BuildSourceDataTreeFromBuilder (ControlBuilder builder , Boolean fInTemplate, Boolean topLevelControlInTemplate, PropertyEntry pse) su System.Web.Compilation.TemplateControlCodeDomTreeGenerator.BuildMiscClassMembers() su System.Web.Compilation.PageCodeDomTreeGenerator.BuildMiscClassMembers() su System.Web.Compilation.BaseCodeDomTreeGenerator.BuildSourceDataTree() su System.Web .Compilation.BaseCodeDomTreeGenerator.GetCodeDomTree (CodeDomProvider codeDomProvider, StringResourceBuilder stringResourceBuilder, VirtualPath virtualPath) su System.Web.Compilation.BaseTemplateBuildProvider.GenerateCode (AssemblyBuilder assemblyBuilder) su System.Web.Co mpilation.AssemblyBuilder.AddBuildProvider (BuildProvider buildProvider) su System.Web.Compilation.AssemblyBuilder.AddBuildProvider (BuildProvider buildProvider) su System.Web.Compilation.BuildProvidersCompiler.ProcessBuildProviders() su System.Web.Compilation.BuildProvidersCompiler.PerformBuild() su System. Web.Compilation.BuildManager.CompileWebFile (VirtualPath virtualPath) su System.Web.Compilation.BuildManager.GetVPathBuildResultInternal (VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate) su System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert (Contesto HttpContext, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate) su System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory (VirtualPath virtualPath, contesto HttpContext, Booleano allowCrossApp, Boolean throwIfNotFound) su Syste m.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath (VirtualPath virtualPath, Type requiredBaseType, HttpContext context, Boolean allowCrossApp) in System.Web.UI.PageHandlerFactory.GetHandlerHelper (contesto HttpContext, String requestType, VirtualPath virtualPath, String physicalPath) in System.Web. HttpApplication.MaterializeHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() a System.Web.HttpApplication.ExecuteStep (passo IExecutionStep, Boolean & completato in modo sincrono) Metodo di errore: Void AddBuildProvider (System.Web.Compilation.BuildProvider) Aiuto Link:
Per risolvere questo problema abbiamo seguito i passi indicati a questo link http://support.microsoft.com/kb/941824/en-us
In sostanza abbiamo appena tagliato il codice HTML e incollarlo indietro .. e il codice progettista viene rigenerato come segue
protected global::System.Web.UI.HtmlControls.HtmlElement htmlTag;
Questo sembra il modo logico per risolvere il problema e ha funzionato anche su poche macchine, ma la stessa soluzione ha rotto il codice su altre macchine sviluppatore e in particolare il codice distribuito anche sul nostro server di produzione. Nota, eseguiamo Windows Server 2008 R2 Datacenter sul nostro server di produzione e abbiamo .Net Framework 4.5 installato sulla macchina. Quello che segue è l'errore si ottiene dopo il cambio
La classe di base include il campo 'htmlTag' ma il suo tipo (System.Web.UI.HtmlControls.HtmlElement) non è compatibile con il tipo di controllo (sistema. Web.UI.HtmlControls.HtmlGenericControl)
Vedete il messaggio di errore è proprio di fronte al primo messaggio di errore in questo post
in quelle macchine che ora l'errore, se ci limitiamo a lasciare il tipo di controllo a HTMLGenericControl
l'errore scompare
Abbiamo cercato di confrontare i service pack .NET Framework correlate sulle macchine che lavorano contro quelli che dont e abbiamo davvero non abbiamo notato nulla che potrebbe causare l'errore
Questa situazione è inaccettabile dal momento che abbiamo squadre distribuite su più località geografiche e non possiamo coordinarci con ciascuna di esse sul modo di sistemare il loro ambiente locale. Più sopra, non siamo in grado di check-in questo file con le modifiche in quanto si romperà per molte persone e rilasciando questo per la produzione sta per essere troppo difficile
la prego di aiutarci a risolvere questo problema
'abbiamo Net Framework 4.5 installato sulla macchina '-> Ma l'AppPool per l'app è effettivamente configurato per usarlo? (cioè molto simile a VS in cui si sceglie un CLR da compilare rispetto a te scegliere un CLR da eseguire sul lato server). (Pool di applicazioni - Scegli quello giusto - Impostazioni di base -.Net Framework versione – tolanj
In IIS la versione .Net Runtime è 4.0 –
hai controllato web.config digita linee? –
tolanj