【问题标题】:AjaxToolkit IIS7 Asp.Net 4.0: Sys is not defined; handler mapping issue?AjaxToolkit IIS7 Asp.Net 4.0:未定义系统;处理程序映射问题?
【发布时间】:2010-09-29 14:43:28
【问题描述】:

我已将我的 asp.net 3.5 应用程序移动到 asp.net 4.0 并从 windows 2003 (iis6) 移动到 windows 2008 r2 (iis7.5),现在我遇到了这个 sys is undefined 错误.

我的应用程序在集成应用程序池中运行。一切正常,除了我的 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处理程序问题的信息,所以我希望一些大师@stackoverflow可以帮助我:)

编辑:

因为我有这个愚蠢的 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 文件中:S

Edit2:奇怪的是,我的本地 web.config 在 web.config 中没有任何处理程序的东西,它在开发网络服务器 casini 上运行

编辑 3: 人们说 Adrian 在这里有解决方案: http://budigelli.wordpress.com/2007/05/01/error-sys-is-undefined-error/ 但我无法让它在 IIS7 上运行

编辑 4: 我在某处读到 IIS7 在Handler mapping 有一个通配符映射 我已经看到在 .axd 映射上方的排序列表中有一个无扩展名的通配符映射。但现在我仍然不知道如何在 IIS7 中配置映射以支持 Ajaxtoolkit!

【问题讨论】:

    标签: httphandler iis-7.5 asp.net-4.0


    【解决方案1】:

    对于 IIS 7 和 IIS 7.5 上的 asp.net 4.0,请将其添加到您的 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 的正确版本

    【讨论】:

    • 您好 Jeremy,您确定它应该是 1.0 版吗?奇怪的是,相同的 webapp 在我的 windows 7 x64 asp.net 4 上本地工作(在 dev.webserver 中构建)但在 IIS 上不能远程工作
    • JP,你是对的,它应该是 4.0.0.0 版本而不是 1.x。我修复了上述内容以反映这一点。
    【解决方案2】:

    好的解决了它: 我在这个网址找到了 Cassiano 的评论: http://madskristensen.net/post/Optimize-WebResourceaxd-and-ScriptResourceaxd.aspx

    然后我意识到我在 IIS7 中有 URL 重写扩展,它在所有内容中附加了一个斜杠。 (规则由重写组件的向导生成)

    这是我当前使用的 web.config 部分,并且有 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?

    【讨论】:

    • JP,我见过这个解决方案,但它适用于 ASP.Net 3.5。如果您在 web.config 中注意到您发布的 ScriptResource.axd 的版本是 3.5.0.0。这可能仍然有效,但它引用的是 3.5 库而不是 4.0 库。 -杰里米
    • 嗨 Jeremy,这是一个 3.5 版的 Web 应用程序,已迁移到 4.0 版。抱歉,我遗漏了该信息。但是 4.0 dll 的引用应该如何?我可以安全地将 ajaxtoolkit 从 3.5 迁移到 4 吗?
    • 就我目前所见,是的。参考我上面的回答。
    【解决方案3】:

    过去我们使用 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"/>

    【讨论】:

      猜你喜欢
      • 2012-08-17
      • 2014-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-21
      相关资源
      最近更新 更多