2010-09-29 71 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"/>