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

时间:2010-03-02 15:49:25

标签: asp.net telerik webresource.axd axd

我有一个我正在托管的网络应用程序,我的客户报告说网站中包含的某些Telerik javascript库(但不是全部)都无法正常工作。

到目前为止我能够诊断的是,在此过程的某个时刻,包含Telerik javascript代码的WebResource.axd资源被阻止。要求客户端使用相同的查询字符串直接导航到AXD文件本身,导致Internet Explorer中出现“与服务器的连接已重置”错误消息。

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

但是,我能够在托管网络内部,外部和家庭连接中成功下载相同的文件。

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

其他尝试的事情:

  • 指向不存在的404.axd的链接(按预期给出了黄色的ASP.NET 404错误消息)
  • 指向WebResource.axd的链接,但指向不存在的资源的无效查询字符串(根据需要提供了黄色ASP.NET无效视图状态或无效的base64字符串)
  • 指向同一WebResource.axd的链接,但是通过不同的主机标头(相同的“连接重置”错误消息)。

我现在感到茫然,因为在这一点上甚至可能出现问题。我们的托管服务器多年来一直在托管几十种不同的ASP.NET应用程序(包括一个有问题的实例),这是我第一次看到这个问题。

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

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

3 个答案:

答案 0 :(得分:4)

如果使用经典的RadControls for ASP.NET,请尝试为页面上的控件设置UseEmbeddedScripts =“false”。这将使它们从RadControls文件夹(物理.js文件)中提供所有脚本,而不是使用嵌入式资源(WebResource.axd)。当然,您必须确保在RadControls文件夹中包含脚本文件。

如果使用RadControls for ASP.NET AJAX进行此操作,则使用脚本管理器(ScriptResource.axd而不是WebResource.axd)下载控件脚本。在任何情况下,您都可以尝试使用Telerik RadScriptManager而不是ASP.NET ScriptManager - 这会将所有脚本组合并压缩为一个请求。

最后,您可以要求您的客户下载并安装Fiddler for IE或Firebug for Firefox,并检查失败的请求究竟发生了什么(例如服务器响应,响应正文中的内容等)。

答案 1 :(得分:0)

从未弄清楚问题是什么,但将RadControls更新到最新版(2009年第一季度)似乎解决了这个问题。

答案 2 :(得分:0)

要从页面中删除WebResource.axdScriptResource.axd,您需要

  • 使用Reflector或ILSpy打开相关的assmbly,然后保存 它来自资源部分的嵌入式JS文件。
  • 现在使用添加它们作为脚本引用 ASP:ScriptManager的

稍后这些定义将呈现为:

<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>