2009-02-24 43 views
21

完整的錯誤是基類包括字段「X」,但它的類型(System.Web.UI.ScriptManager)不與(System.Web.UI.ScriptManager)的類型的控制兼容

基類包含'ScriptManager1'字段,但其類型(System.Web.UI.ScriptManager)與控件類型(System.Web.UI.ScriptManager)不兼容。

其他人碰到這個錯誤?

+0

似乎是重複的。參考米切爾的答案在這裏:http://stackoverflow.com/questions/582492/working-with-vs2008-3-5-asp-ajax-site-on-a-2-0sp1-ajax-extesnion-1-0-server – 2009-02-24 17:14:21

回答

35

我設法加入這web.config文件進行修復:

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
      <assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/> 
       <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/> 
     </dependentAssembly> 
     <dependentAssembly> 
      <assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35"/> 
      <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/> 
     </dependentAssembly> 
    </assemblyBinding> 
</runtime> 

我相信它迫使.NET運行時使用新版本那些議會。

7

我在將.NET應用程序從.NET 2.0升級到3.5時遇到了這個問題。

檢查您的web.config是否爲.NET 3.5正確設置。我添加/更改如下:

<configSections> 
    <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
     <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
     <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/> 
     <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
      <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere"/> 
      <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/> 
      <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/> 
      <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/> 
     </sectionGroup> 
     </sectionGroup> 
    </sectionGroup> 
    </configSections> 

     <assemblies> 
     <!--<add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>--> 
     <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
     <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
     <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
     </assemblies> 

    <httpHandlers> 
     <remove verb="*" path="*.asmx"/> 
     <add verb="*" path="*.asmx" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/> 
     <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/> 
    <httpHandlers> 



     <pages enableSessionState="true" validateRequest="true"> 
      <controls> 
     <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
      </controls> 
     </pages> 

    <httpModules> 
    <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
    </httpModules> 

0

我們有一個非常類似的問題。開發平臺運行良好,但一旦網站部署到測試網站,它就會與上面的原始海報一樣發出相同的消息。 我們有我們的控制目錄下的子目錄將用戶控件分組在一起。該問題似乎是試圖在其上的目錄中使用控件的子目錄中的一個控件。我們的第一個解決方法是將頂層控件克隆到子目錄。 然後,我們打開了創建並行兄弟子目錄並將控制權停在那裏的想法。這就解決了這個問題,而不必訴諸於(a)展開控件目錄結構或(b)在各個子目錄中克隆相同的控件。

所以我們的解決方案是永遠不會從子目錄中的用戶控件引用父目錄中的控件。

我希望這會有所幫助。

0

這也可以通過更改項目引用到System.Web.Extensions 1.0.61025或其他版本來解決,確保項目引用,Web配置和ajax工具包都匹配相同的版本。

2

添加上面的<runtime>部分解決了我們的開發機器和測試服務器上的問題,但解決了我們的在線服務器問題。

事實證明,如果你web.config文件中包含的xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"了xmlns屬性,那麼你會得到一個GAC衝突:

BAD.web.config 
<?xml version="1.0"?> 
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"> 
etc 

但是這個版本從DEVT機器罰款:

GOOD.web.config 
<?xml version="1.0"?> 
<configuration> 
etc 

因此,請確保從您的web.config文件的頂部刪除2.0參考。

0

我們從使用命令行預編譯我們的應用程序時,有同樣的問題,「應用程序是可更新的」標誌:

aspnet_compiler.exe -u 

去除-u標誌解決了這個問題。不要問我爲什麼!

1

你也可以在.vbproj文件中解決這個問題(在我的情況下)。檢查這些條目:

<Reference Include="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"> 
    <RequiredTargetFramework>3.5</RequiredTargetFramework> 
</Reference> 
<Reference Include="System.Web.Extensions.Design, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"> 
    <RequiredTargetFramework>3.5</RequiredTargetFramework> 
</Reference> 

這似乎也強制使用3.5版DLL。

0

非常類似的問題。 「基類包括字段'WebUserControl1',但它的類型(common_WebUserControl)是......」將標記文件從CodeFile=改爲CodeBehind=

0

就我而言,只是將構建框架從2.0改爲3.5。

這是通過右鍵單擊項目名稱(解決方案資源管理器頂部)並選擇「屬性頁面」來完成的。從那裏,選擇構建選項並更改框架。

它應該更新web.config和所有需要的引用。

HTH

戴夫

0

只好更新從3.5到4.0的類似問題。在我的情況下,有一個根網站和下面的虛擬IIS應用程序目錄。

該代碼在我的開發和暫存區域中工​​作良好。

一旦它進入生產服務器,它就會崩潰。儘管代碼是相同的。

我的解決方案是刪除虛擬目錄並重新創建它。確保應用程序池是正確的,並且asp.net版本是正確的。 (我的服務器是Windows Server 2003與IIS6)。

另一個重要提示 - 你不能在同一個應用程序池中運行多個asp.net版本。

0

「的基類包括字段‘ScriptManager1’,但其類型 (System.Web.UI.ScriptManager)不與對照 (System.Web.UI.ScriptManager)的類型兼容」。

任何人都會遇到此錯誤?

我已經有過這種錯誤多次,但不是特別與scriptmanager。基本上它發生在頁面上的一種類型的控制。並且可以說你有空閒了一段時間。但是之後你刪除了控制器,並將另一個控制器替換爲具有相同ID的位置,即可以發生這種情況。我相信它與aspx.designer.cs過時有關或已經過時。

解決此問題。我必須更改控件ID的名稱,或者重新構建解決方案。我認爲還有另一種方式。我想如果你有一個aspx.designer.cs文件的aspx文件的名字,你也可以在那裏修改它。