代码之家  ›  专栏  ›  技术社区  ›  MisterZimbu

ASP.NET AXD资源在客户端被阻止?

  •  3
  • MisterZimbu  · 技术社区  · 15 年前

    我有一个我正在托管的Web应用程序,我的一个客户报告说站点中包含的某些telerik javascript库(但不是所有库)工作不正常。

    到目前为止,我能够诊断的是,在这个过程的某个时刻,包含telerik javascript代码的webresource.axd资源被阻塞了。要求客户机使用相同的查询字符串直接导航到AXD文件本身,会在Internet Explorer中生成一条“已重置与服务器的连接”错误消息。

    客户端尝试从其所在位置的多台计算机、防火墙和网络之外的一台计算机以及在其家中运行的一台计算机下载该文件,每次都会收到相同的错误。他们尝试同时使用Internet Explorer和Firefox。

    但是,我能够成功地从我们的主机网络、主机网络外部和家庭连接下载相同的文件。

    根据IIS日志,所有记录的下载资源的尝试都产生了200HTTPOK结果。

    其他尝试过的事情:

    • 指向不存在的404.axd的链接(按预期给出黄色的ASP.NET 404错误消息)
    • 指向webresource.axd的链接,但具有指向不存在的资源的无效querystring(按预期提供黄色ASP.NET无效的viewstate或无效的base64字符串)
    • 指向同一webresource.axd的链接,但通过不同的主机头(相同的“连接重置”错误消息)。

    我现在很茫然,因为在这一点上可能会有什么问题。多年来,我们的托管服务器一直托管着数十个不同的ASP.NET应用程序(包括几个相关实例),这是我第一次看到有关这方面的投诉。

    我99%的人确信,问题是客户端的防火墙或路由器内容过滤配置不正确,但这并不能解释为什么客户端在防火墙外和家里都看到同样的问题。

    有什么可能出错的想法,甚至还有什么问题要问?有没有人见过这样的东西?

    3 回复  |  直到 11 年前
        1
  •  4
  •   lingvomir    15 年前

    如果在经典的Radcontrols for ASP.NET中发生这种情况,请尝试为页面上的控件设置useEmbeddedScripts=“false”。这将使它们服务于radcontrols文件夹(physical.js文件)中的所有脚本,而不是使用嵌入资源(webresource.axd)。当然,您必须确保在radcontrols文件夹中有脚本文件。

    如果在ASP.NET AJAX的RADControls中发生这种情况,则使用脚本管理器(scriptreesource.axd而不是webresource.axd)下载控件脚本。在任何情况下,您都可以尝试使用telerik radscriptmanager而不是ASP.NET scriptmanager-这将合并所有脚本并将其压缩为一个请求。

    最后,您可以要求您的客户下载并安装Fiddler for IE或Firebug for Firefox,并检查失败请求的具体情况(例如服务器响应、响应主体中的内容等)。

        2
  •  0
  •   MisterZimbu    15 年前

    从来没有弄清楚问题是什么,但是将Radcontrols更新到最新版本(2009年第一季度最终版本)似乎解决了问题。

        3
  •  0
  •   VahidN    11 年前

    消除 WebResource.axd ScriptResource.axd 从页面上,您需要

    • 使用反射镜或ilspy打开相关组件,然后保存 它的嵌入JS文件来自参考资料部分。
    • 现在添加它们作为脚本引用,使用 ASP:脚本管理器

    稍后,这些定义将呈现为:

    <script src="staticJS1.js" type="text/javascript"></script> 
    <script src="staticJS2.js" type="text/javascript"></script> 
    

    不会再被封锁了。

    <asp:ScriptManager ID="Scriptmanager1" runat="server">
            <Scripts>
                <asp:ScriptReference Name="MicrosoftAjaxWebForms.js" Assembly="System.Web.Extensions"
                    Path="~/staticJS1.js" />
                <asp:ScriptReference Name="MicrosoftAjax.js" Assembly="System.Web.Extensions" Path="~/staticJS2.js" />
            </Scripts>
    </asp:ScriptManager>
    
    推荐文章