2010-03-02 66 views
3

我有一个我正在托管的Web应用程序,并且我的一个客户端报告说某些Telerik JavaScript库包含在该站点内(但不是所有这些库)都不能正常工作。ASP.NET AXD资源在客户端被阻止?

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

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

但是,我能够成功地在我们的托管网络内部,在它之外以及从我的家庭连接下载相同的文件。

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

已尝试

其他的事情:

  • 到一个不存在404.axd的链接(给预期的黄色ASP.NET 404错误消息)
  • 链接到WebResource.axd的,但一个无效的查询字符串指向一个不存在的资源(按照预期给出了黄色的ASP.NET无效的viewstate或无效的base64字符串)
  • 指向同一个WebResource.axd的链接,但是通过不同的主机头(同一个“连接重置“错误消息)。

我现在处于亏损状态,现在甚至可能是这个问题。我们的托管服务器多年来一直托管许多不同的ASP.NET应用程序(包括有问题的几个实例),这是我见过的第一个关于此问题的投诉。

我99%确定这个问题是在客户端使用了不正确的防火墙或路由器内容过滤配置,但这并不能解释为什么客户端在防火墙和家庭之外看到相同的问题。

有什么想法可能会出错或甚至要问什么问题?有没有人看到过这样的任何东西?

+0

当他们“在家”时,他们是否拨入企业网络以脱身?或者,他们是否在通过该公司网络路由流量的VPN? – NotMe 2010-03-02 15:58:25

+0

据他们说,所用的家用电脑根本没有VPN或拨入公司网络。 – MisterZimbu 2010-03-02 16:29:13

回答

0

从来没有弄清楚问题是什么,但RadControls更新到最新(Q1'09决赛)似乎解决了这个问题。

4

如果使用经典的RadControl for ASP.NET进行此操作,请尝试将UseEmbeddedScripts =“false”设置为页面上的控件。这将使他们服务RadControls文件夹(物理.js文件)中的所有脚本,而不是使用嵌入式资源(WebResource.axd)。自然,你必须确保你的RadControls文件夹中有脚本文件。

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

最后,你可以问你的客户下载和IE浏览器或Firebug的提琴手安装Firefox和检查究竟是与失败(例如服务器响应,什么是响应体等)的要求发生。

+0

它运行ASP.NET的RadControls;抱歉没有指定该部分。我将UseEmbeddedScripts解决方法保存为最后的手段,因为如果可以的话,我宁愿在其根目录下修正问题。 – MisterZimbu 2010-03-02 16:31:48

+0

在这种情况下,您别无选择,只能使用HTTP调试代理(Fiddler,Firebug)并查看WebResource.axd浏览器请求和服务器响应的具体情况。 – lingvomir 2010-03-04 07:32:09

0

为了消除WebResource.axdScriptResource.axd从页面,则需要

  • 打开ASSMBLY使用反射器或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>