ASP.NET AXD资源在客户端被阻止吗?
-
23-09-2019 - |
题
我有一个我托管的Web应用程序,我的一个客户报告说,该网站中包含的某些Telerik JavaScript库(但并非全部)无法正常工作。
到目前为止,我能够诊断出的是,在此过程中的某个时候,包含Telerik JavaScript代码的Webresource.axd资源已被阻止。要求客户在Internet Explorer中直接导航到具有相同查询的AXD文件本身,即在Internet Explorer中产生“与服务器的连接重置”错误消息。
客户端试图从其位置的几台计算机以及防火墙和网络外的机器以及在家里运行的机器下载该文件,并且每次都会出现相同的错误。他们尝试使用Internet Explorer和Firefox。
但是,我能够在我们的托管网络,外部以及我的家庭连接中成功下载同一文件。
根据IIS日志,所有记录下载资源的尝试都产生了200 HTTP OK结果。
其他尝试的事情:
- 链接到不存在的404.axD(给出了预期的黄色ASP.NET 404错误消息)
- 指向webresource.axd的链接,但是带有无效的Querystring指向不存在的资源(按照预期给出了黄色ASP.NET无效的ViewState或Invalid Base64字符串,
- 指向同一Webresource.axd的链接,但通过其他主机标头(相同的“连接重置”错误消息)。
现在,我现在可能会出现问题。多年来,我们的托管服务器一直在托管数十个不同的ASP.NET应用程序(包括有关其中的几个实例),这是我对此的第一个投诉。
我99%的人确定问题在客户端具有不当的防火墙或路由器内容过滤配置,但这并不能解释为什么客户在防火墙和家里都看到了相同的问题。
关于可能出了什么问题,甚至还有什么问题要问什么想法?有没有人看到这样的东西?
解决方案 2
从来没有弄清楚这个问题是什么,但是将RADControls更新为最新的(Q1'09决赛)似乎已经解决了问题。
其他提示
如果ASP.NET的经典RADControls发生这种情况,请尝试为页面上的控件设置usembeddedscripts =“ false”。这将使他们从RadControls文件夹(物理.js文件)中使用所有脚本,而不是使用嵌入式资源(Webresource.axd)。自然,您必须确保在RadControls文件夹中包含脚本文件。
如果ASP.NET AJAX的RadControls发生这种情况,则使用脚本管理器(scriptresource.axd而不是webresource.axd)下载控件脚本。无论如何,您都可以尝试使用Telerik RadScriptManager而不是ASP.NET ScriptManager-将所有脚本组合并压缩到一个请求中。
最后,您可以要求客户下载并安装FINEFOX的IE或Firebug Firebug提琴手,并检查失败的请求到底发生了什么(例如服务器响应,响应主体中的内容等)。
消除 WebResource.axd
和 ScriptResource.axd
从页面上,您需要
- 使用反射器或ILSPY打开相关的相关,然后从资源部分保存其嵌入式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>