2010-03-02 43 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>