2010-09-29 36 views
6

我已經將我的asp.net 3.5應用程序移至asp.net 4.0並從Windows 2003(iis6)移至Windows 2008 R2(iis7.5),現在我有這個sys is undefined錯誤。AjaxToolkit IIS7 Asp.Net 4.0:Sys未定義;處理器映射問題?

我有應用程序在集成應用程序池中運行。除了我的ajaxtoolkit 3.0.20820.0 dll

現在我已經閱讀了幾篇博客文章,其中大部分都覆蓋了asp.net 2.0 web.config文件,而不是最小化的asp.net 4.0配置文件。

這裏是從我目前的配置文件中的一些部分:

<system.webServer> 
<modules runAllManagedModulesForAllRequests="true"/> 
<validation validateIntegratedModeConfiguration="false"/> 
<handlers> 
    <add name="AjaxToolkit" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    <add name="ChartImg" verb="*" path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
</handlers> 

,而另一部分:

<httpHandlers> 
    <remove verb="*" path="*.asmx"/> 
    <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> 
    <add verb="GET" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler" validate="false"/> 
    <add path="ChartImg.axd" verb="GET,HEAD,POST" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false" /> 
</httpHandlers> 

沒有可用的asp.net 4.0和ajaxtoolkit HTTP處理程序問題很多信息,所以我希望有些大師@Coveroverflow可以幫助我:)

編輯:

因爲我有這個愚蠢的SYS不確定的事情,我的Global.asax給出了這樣的ON_ERROR:

Error Message: This is an invalid script resource request. 
Stack Trace: 
at System.Web.Handlers.ScriptResourceHandler.ProcessRequest(HttpContext context) 
at System.Web.Handlers.ScriptResourceHandler.System.Web.IHttpHandler.ProcessRequest(HttpContext context) 
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) 

這是對的ScriptResource.axd文件:■

EDIT2:奇怪的是,我的地方web.config中沒有得到任何處理的東西在web.config和其上運行的Web服務器的發展卡西尼

編輯3:人說,阿德里安有這裏的解決方案: http://budigelli.wordpress.com/2007/05/01/error-sys-is-undefined-error/ 但我不能讓它在IIS7

編輯工作4:我在什麼地方讀到IIS7具有Handler mapping 通配符映射我看到有一個擴展名的通配符映射在去整理列表.xd映射上方的列表。但現在我仍然不知道如何配置IIS7中的映射來支持Ajaxtoolkit!

回答

4

OK解決了它: 我發現卡西亞諾此評論在這個網址: http://madskristensen.net/post/Optimize-WebResourceaxd-and-ScriptResourceaxd.aspx

,然後我意識到,我有URL rewritin在IIS7中增加了一個附加的斜槓給一切。 (該規則是由重寫組件嚮導生成的)

這是我當前的網頁。這是我使用並有ajaxtoolkit配置部分工作:

<httpHandlers> 
    <remove verb="*" path="*.asmx" /> 
    <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
    <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" /> 
    <add path="ChartImg.axd" verb="GET,HEAD,POST" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false" /> 
</httpHandlers> 
<httpModules> 
    <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
</httpModules> 

這部分:

<system.webServer> 
    <validation validateIntegratedModeConfiguration="false" /> 
    <modules> 
     <add name="ScriptModule" preCondition="integratedMode" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
    </modules> 
    <handlers> 
     <remove name="WebServiceHandlerFactory-Integrated" /> 
     <add name="test jp" path="*.axd" verb="*" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" preCondition="classicMode,runtimeVersionv4.0,bitness32" /> 
     <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
     <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
     <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
     <add name="ChartImg" verb="*" path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
    </handlers> 

規則編號10: AjaxToolkit IIS7 Asp.Net 4.0: Sys is not defined; handler mapping issue?

+0

JP,我已經看到這個解決方案,但它是ASP.Net 3.5。如果你在web.config中注意到你發佈了ScriptResource.axd的版本是3.5.0.0。這可能仍然有效,但它引用3.5庫而不是4.0庫。 - 傑里米 – Jeremy 2010-10-04 17:55:20

+0

嗨傑里米,這是一個3.5的網絡應用程序被遷移到4.0。對不起,我忽略了這些信息。但應該如何爲4.0 dll的參考?我可以安全地將ajaxtoolkit從3.5遷移到4嗎? – 2010-10-05 06:52:10

+0

據我目前所見,是的。參考我上面的答案。 – Jeremy 2010-10-11 19:29:57

17

對於asp.net 4.0 IIS 7和IIS 7.5添加到您的web.config:

<system.webServer> 
      <handlers> 
       <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
      </handlers> 
</system.webServer> 

更新:我已經改變了版本爲正確版本的ASP.NET 4.0

+0

Hello Jeremy,你確定它應該是1.0版嗎?奇怪的事情,它相同的Web應用程序在本地工作在我的Windows 7 x64 asp.net 4(與生成dev.webserver),但不能遠程工作在IIS – 2010-09-30 10:34:32

+0

JP,你是對的,它應該是版本4.0.0.0不是1.x的我修正了上述內容以反映這一點。 – Jeremy 2010-10-04 18:10:23

+0

這個答案有多優秀!解決了我的問題! – FiveTools 2011-06-09 03:17:47

0

在我們使用ASP.NET AjaxToolkit過去,模板,演示或示例文件發貨,其中web.config具有以下內容

 <remove name="ScriptHandlerFactory"/> 
 
     <remove name="ScriptHandlerFactoryAppServices"/> 
 
     <remove name="ScriptResource"/> 
 
     <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
 
     <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
 
     <add name="ScriptResource" verb="GET,HEAD" path="ScriptResource.axd" preCondition="integratedMode" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>