64

作業中のASP.Net/AJAXコントロールキットプロジェクトがあります。80%の確率で問題はありません。ページは正常に実行されます。ページを更新すると、「Sysisundefined」というJavaScriptエラーが表示されることがあります。

常に発生するわけではありませんが、再現性があります。その場合、ユーザーはブラウザをシャットダウンしてページを再度開く必要があります。

これにより、IIS設定である可能性があると私は信じています。

別のメモ。エラーが発生したときと発生しなかったときの両方で、ページソースを確認しました。ページがエラーをスローすると、次のコードが欠落します。

<script src="/ScriptResource.axd?d=EAvfjPfYejDh0Z2Zq5zTR_TXqL0DgVcj_h1wz8cst6uXazNiprV1LnAGq3uL8N2vRbpXu46VsAMFGSgpfovx9_cO8tpy2so6Qm_0HXVGg_Y1&amp;t=baeb8cc" type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
if (typeof(Sys) === 'undefined') throw new Error('ASP.NET Ajax client-side framework failed to load.');
//]]>
</script>
4

31 に答える 31

56

ページの HTML でSys.* 呼び出しを含むブロックを下に移動することで問題を解決しまし<script type="text/javascript"></script>た (本文のセクションを閉じる前の最後の項目まで)。元々 、ページの HEAD セクションに<asp:Content/>スクリプト ブロックがありました。<asp:Content/>MasterPageFile を持つページ内で作業していました。これが誰かを助けることを願っています。

于 2009-11-11T22:27:24.900 に答える
13

エラーを経験したとき

  • システムが定義されていません
  • ASP.NET Ajax クライアント側フレームワークの読み込みに失敗しました

IE で .NET 2.0 で ASP.NET Ajax コントロールを使用する場合、<system.web>タグ内の web.config ファイルに次を追加する必要がありました。

<httpHandlers>
  <remove verb="*" path="*.asmx"/>
  <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  <add verb="GET" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler" validate="false"/>
</httpHandlers>
于 2010-04-01T21:44:07.670 に答える
8

ScriptManager をこれに設定してみてください。

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true" /> 
于 2008-09-16T18:28:19.310 に答える
7

私はテレリックを使用していましたが、まったく同じ問題がありました。

これをweb.configに追加すると、問題が解決しました:)

<location path="Telerik.Web.UI.WebResource.axd">   
   <system.web>  
     <authorization>  
       <allow users="*"/>  
     </authorization>  
   </system.web>  
</location>

多分それもあなたを助けるでしょう。それは認証の問題でした。

ソース

于 2012-02-19T14:57:23.437 に答える
6

次の解決策のいずれかを試してください。

1.ブラウザが圧縮スクリプトのロードに失敗する

これは通常、IE6 でエラーが発生し、他のブラウザーでは発生しない場合に当てはまります。

スクリプト リソース ハンドラ – ScriptResource.axd は、ブラウザに返す前にスクリプトを圧縮します。RTM より前のリリースでは、ハンドラーは常にすべてのブラウザーに対してそれを行っており、構成可能ではありませんでした。IE6 のコンポーネントの 1 つに問題があり、圧縮されたスクリプトを正しくロードできません。こちらのKB 記事を参照してください。RTM ビルドでは、これに対して 2 つの修正を行いました。1 つ目は、IE6 がブラウザー クライアントの場合は圧縮しません。2 つ目は、圧縮を構成可能にしたことです。web.config を切り替える方法は次のとおりです。

どのように修正しますか?まず、AJAX Extensions 1.0 RTM リリースを使用していることを確認してください。それだけで十分なはずです。web.config を次のように編集して、圧縮を無効にすることもできます。

<system.web.extensions>
<scripting>
<scriptResourceHandler enableCompression="false" enableCaching="true" />
</scripting>
</system.web.extensions>

2. ScriptResourceHandler に必要な構成が、アプリケーションの web.config に存在しません

拡張機能のインストールで提供される既定の web.config ファイルのエントリが web.config に含まれていることを確認します。(デフォルトの場所: C:\Program Files\Microsoft ASP.NET\ASP.NET 2.0 AJAX Extensions\v1.0.61025)

3. Web に使用している仮想ディレクトリがアプリケーションとして正しくマークされていない (そのため、構成が読み込まれていない) - これは IIS Web で発生する可能性があります。

仮想ディレクトリだけでなく、Web アプリケーションを使用していることを確認してください

4. ScriptResource.axd リクエストが 404 を返す

これは通常、ASP.NET 全体の構成ミスを示しています。ASP.NET の既定のインストールでは、.axd で終わるリソースへの Web 要求は、isapi マッピングを介して IIS から ASP.NET に渡されます。さらに、ファイルが存在するかどうかをチェックしないようにマッピングが構成されています。そのマッピングが存在しない場合、またはファイルが存在するかどうかのチェックが無効になっていない場合、IIS は物理ファイル ScriptResource.axd を見つけようとしますが、見つからず、404 を返します。

ここから ScriptResource.axd への完全な URL をコピー/貼り付けして、返される内容を確認することで、これが問題であるかどうかを確認できます。

<script src="/MyWebApp/ScriptResource.axd?[snip - long query string]" type="text/javascript"></script>

これをどのように修正しますか?ASP.NET がまったく正しくインストールされていない場合は、「aspnet_regiis.exe」コマンド ライン ツールを実行して修正できます。C:\WINDOWS\Microsoft.Net\Framework\v2.0.50727 にあります。「aspnet_regiis -i -enable」を実行すると、ASP.NET が IIS に完全に登録され、IIS6 で ISAPI が有効になっていることが確認されます。「aspnet_regiis -s w3svc/1/root/MyWebApp」を実行して、Web アプリケーションの登録のみを修正することもできます。

5. IIS 7 で ASP.NET AJAX RTM の「Sys is undefined」エラーを解決する

このエントリを下に置きます<system.webServer/><handlers/>:

<add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />

の下のものを削除し<system.web/><httpHandlers/>ます。

参考文献: http://weblogs.asp.net/chrisri/demystifying-sys-is-undefined http://geekswithblogs.net/lorint/archive/2007/03/28/110161.aspx

于 2015-08-17T18:52:33.657 に答える
5

これらの行を web.config に追加する必要があります

<httpHandlers>
  <remove verb="*" path="*.asmx"/>
  <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
</httpHandlers>
<httpModules>
  <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</httpModules>
</system.web>

お役に立てれば。

于 2010-11-23T20:27:55.060 に答える
4

ページにScriptManagerがあることを確認することに加えて、web.configが適切に構成されていることを確認する必要があります。

ASP.NET AJAX 1.0がリリースされたとき(.NET 2.0の場合)、ハンドラーやコントロールなどを追加する多くのカスタムweb.config設定がありました。

構成情報はここにあります:http ://www.asp.net/AJAX/documentation/live/ConfigureASPNETAJAX.aspx

于 2008-09-18T23:00:36.410 に答える
3

.NET AJAX とやり取りするすべてのクライアント スクリプトの末尾に次の行があることを確認してください。

if (typeof(Sys) !== 'undefined')  Sys.Application.notifyScriptLoaded();

これにより、スクリプト ファイル全体が読み込まれ、クライアント メソッドの呼び出しを開始できることがスクリプト マネージャに通知されます。

于 2008-10-14T07:58:46.173 に答える
2

私はこれと同じ問題を抱えていましたが、多くの論争の後、問題を切り分けて、スクリプトマネージャーを空のページにロードするだけで、同じエラーが発生しました。自分のサイトの web.config と、web.configの system.web セクションに 変更<compilation debug="true">する新しい (動作中の) テスト サイトを比較して発見した問題を特定すると、問題が修正されます。<compilation debug="false">

<xhtmlConformance mode="Legacy"/>また、更新パネルを適切に機能させるために、system.web からエントリ を削除する必要がありました。この問題の説明については、ここをクリックしてください。

于 2009-02-11T18:44:35.247 に答える
1

上記のいずれもうまくいかず、たまたま OnPreRenderComplete をオーバーライドしている場合は、必ず base.OnPreRenderComplete を呼び出してください。私のセラピストは私に会えて幸せになるでしょう

于 2013-05-29T19:23:16.293 に答える
1

別のasp.net ajaxソリューションを作成し、すべてのajax構成をweb.configから作業プロジェクトにコピーして貼り付けることで、この問題を解決しました。

web.configで設定する必要がある構成は次のとおりです

    <configuration>
<configSections>
    <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
        <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
            <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
</sectionGroup>

    </sectionGroup>
</configSections>

        <assemblies>

            <add assembly="System.Web.Extensions,     Version=1.0.61025.0,       Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

        </assemblies>
           </compilation>
        <httpHandlers>
        <remove verb="*" path="*.asmx"/>
        <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
        <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
        <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
    </httpHandlers>
    <httpModules>
        <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
    </httpModules>
</system.web>
    <system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules>
        <add name="ScriptModule" preCondition="integratedMode" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
    </modules>
    <handlers>
        <remove name="WebServiceHandlerFactory-Integrated"/>
        <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
        <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
        <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
    </handlers>
</system.webServer>
于 2011-06-09T11:07:13.673 に答える
1

私の場合、問題は、部分的なポストバック後にグリッドビューのテーブルヘッダーを保持するために次のコードを追加したことでした:

    protected override void OnPreRenderComplete(EventArgs e)
    {
        if (grv.Rows.Count > 0)
        {
            grv.HeaderRow.TableSection = TableRowSection.TableHeader;
        }
    }

このコードを削除すると、問題が停止しました。

于 2016-09-21T14:16:29.160 に答える
1

AjaxControlToolkit.dll を 4.1.60623.0 から最新バージョンの 4.1.7.725 に更新した後、同じ問題が発生しました。検索してこのページにたどり着きましたが、どの回答も役に立ちません。CodePlex zip ファイルにある Ajax Control Toolkit のサンプル Web サイトを調べたところ、<asp:ScriptManager>が新しい に置き換えられていることがわかりました<ajaxtoolkit:ToolkitScriptManager>。私はそうしましたが、Sys.Extended is undefinedはもうありません。

于 2013-08-18T16:05:12.550 に答える
0

これはばかげているように聞こえますが、VS2010で開発され、VSDevServerでホストされているサイトで同様の問題が発生しました。問題のページには、wcfサービスへの接続を作成するためのscriptmanagerがありました。サービスにメソッドを追加しましたが、このエラーが表示され始めました。

私にとってそれを修正したのは、orojectWeb設定で「ポートの自動割り当て」から「特定のポート」に異なるポート番号で変更することでした。

理由を知っていたらいいのに...

于 2012-06-14T10:41:21.097 に答える
0

URLを変更する書き換えルールがないことを確認してください。

私の場合、アプリケーションは、URLが到達したレベルよりも深いと考えていました。

例: http: //mysite.com/app/page.aspxが実際のURLでした。しかし、私は/ app /を切り取りました。これは、ASP.netとWCFでは正常に機能しましたが、Ajaxでは明らかに機能しませんでした。

于 2011-07-29T07:47:17.990 に答える
0

私の場合、非常に隠された理由を見つけました...サブフォルダーのテストには表示されませんが、常に質問エラーを返すGlobal.ascx.csにこのページルートがありました..別の奇妙な問題のある日。

routes.MapPageRoute("siteDefault", "{culture}/", "~/default.aspx", false, new RouteValueDictionary(new { culture = "(\\w{2})|(\\w{2}-\\w{2})" }));
于 2016-05-27T02:20:40.513 に答える
0

Web 構成の正しいエントリを追加した後でも、このエラーが発生しますか? このエラーの最も一般的な理由は、JavaScript が Sys 名前空間を参照するのが早すぎることです。次に、最も明白な修正は、Java スクリプト ブロックを ScriptManager コントロールの下に移動することです。

于 2013-02-13T23:48:29.557 に答える
0

私のページが一貫して Sys is undefined エラーを生成していたことを除いて、同様の問題がありました。

私にとっての問題は、.NET 2.0 用の AJAX 1.0 拡張機能をインストールしたばかりで、Visual Studio で Web プロジェクトを既に作成していたという事実に起因しています。

AJAX コントロールを作成しようとすると、このエラーが発生し続けました。ここで Slace と MadMax1138 の投稿を見つけました。そして、それが私のweb.configであると考え、新しい「AJAX対応Webサイト」プロジェクトタイプを使用して新しいプロジェクトを作成しました.web.configには、AJAXコントロールを使用するために必要な多数のカスタマイズが含まれています。

すでに自分で行った web.config の更新でその web.config を更新し、それを既存のプロジェクトにドロップしたところ、すべて正常に機能しました。

于 2009-03-24T16:44:05.600 に答える
0

私は同様の問題を抱えていましたが、驚いたことに、私の開発者の 1 人が web.config をweb123.configと同じフォルダー/ソリューションに保存し、誤ってこれらのファイルの両方がアップロードされたことがわかりました。

web123.configファイルを削除するとすぐに、このエラーは消え、ajax フレームワークは正しく読み込まれました。持っていても

<compilation debug="true">

私の場合、次のセグメントもあります。私のプロジェクトはフレームワーク 3.5 を使用しています

    <httpHandlers>
  <remove verb="*" path="*.asmx"/>
  <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
</httpHandlers>
<httpModules>
  <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</httpModules>
</system.web>
于 2012-02-25T09:06:10.803 に答える
0

追加

if (typeof(Sys) !== 'undefined') Sys.Application.notifyScriptLoaded(); 

ここにリンクの説明を入力してください

于 2015-05-07T06:53:35.917 に答える
0
開発環境:
  • 開発環境: VS 2012
  • 為替: 4.0/4.5
  • 実装: Master(ScriptManager + UpdatePanel/Timer) + Content (UpdatePanel)
  • パターン: PageRouting。

免責事項:

すべてのweb.config解決策がうまくいかず、PageRouting (IIS 7 以降) を実装している場合は、以下のコード スニペットで問題を解決できます。

バックグラウンド:

この質問をハイジャックするつもりはありませんが、他の人と同じ問題があり、.Net 4.0/4.5 用にわずかな変更を加えて、ここで提案を 100% 実装しましたが、どれもうまくいきませんでした。

私の状況では、問題をゴースト化するページ ルーティングを実装していました。基本的には、約 20 回程度は機能しますが、デバッグを実行すると、BAM でエラーが発生しSys is undefinedます。

Clean-URL ロジックについて話している他のいくつかの投稿を確認した後、PageRouting のセットアップを行ったことを思い出しました。

パターンを作成するために使用したリソースは次のとおりです:ページ ルーティング

私のワンライナーコードは私のVS2012デバッグの問題を修正しました:

rts.Ignore("{resource}.axd/{*pathInfo}")    'Ignores any Resource cache references, used heavily in AJAX interactions.
于 2012-11-29T17:58:28.267 に答える
0

Ajax Control Toolkit ToolkitScriptManager と URL Write 2.0 を組み合わせて使用​​すると、エラーが見つかりました。

<rewrite> <outboundRules>の前提条件は次のとおりです。

<preConditions>
    <preCondition name="IsHTML">
        <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html"/>
    </preCondition>
</preConditions>

しかし、どうやら私のアウトバウンド ルールの一部は、前提条件を使用するように設定されていませんでした。

すべてのアウトバウンド ルールに preCondition を設定したら、次のようにします。

<rule preCondition="IsHTML" name="MyOutboundRule">

もう問題ありません。

于 2011-05-16T16:23:21.933 に答える
0

この点は追加されていないと思います。これを探すのに少し時間を費やしたので、役に立てば幸いです.

IIS 7 で作業しており、ASP.NET v4 Framework を使用しています。
私の場合、web.config ファイルのエントリのセクションとセクションの両方にエントリを追加することが重要でした。

私の web.config ファイルには多くのハンドラーがあり、私の場合、ハンドラー セクションの先頭に ScriptResources エントリを追加するのが最も簡単でした。 最も重要なことは、ワイルドカードとして機能してリクエストをキャプチャするエントリの前に配置する必要があることです。 ワイルドカード エントリの後に追加すると、無視され、エラーが引き続き表示されます。

モジュールは、セクションの上部または下部に追加できます。

Web.config サンプル:

<system.webServer>
    <handlers>
      <clear />
      <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
      <!-- Make sure wildcard rules are below the ScriptResource tag -->
    </handlers>
    <modules>
      <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      <!-- Other modules are added here -->
    </modules>
  </system.webServer>
于 2013-04-19T16:55:19.397 に答える
0

今日もまったく同じエラーが発生しましたが、これは構成または直接の JavaScript の問題ではありませんでした。

外部の .net プロジェクトが更新されましたが、Web サイトのコンパイルで変更が適切に反映されませんでした。私の推測では、ASP.NET ajax は .NET オブジェクトのクライアント表現を正しく構築できなかったため、正しくロードできませんでした。

解決するために、外部プロジェクトを再構築し、問題が発生していたソリューションを再構築しました。問題は解決しました。

于 2010-08-18T10:41:20.223 に答える
-1

こんにちは、私の問題を解決してくれてありがとう、

デフォルトではvs 2008が追加されます

 <!--<add verb="*" path="*.asmx" validate="false" type="Microsoft.Web.Script.Services.ScriptHandlerFactory, Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
      <add verb="GET" path="ScriptResource.axd" type="Microsoft.Web.Handlers.ScriptResourceHandler" validate="false" />-->

デフォルト設定(上記)を以下のコード FIXに修正する必要があります

 <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  <add verb="GET" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler" validate="false"/>
于 2010-09-21T06:19:54.117 に答える
-1

サーバーに正しい時刻と日付が設定されていることを確認してください...

約6時間無駄にした後、どこかで読んだ...

サーバーの日付と時刻は、正しく機能するように更新する必要があります...

そうしないと、'Sys' is undefined エラーが発生します。

于 2010-05-07T15:54:26.497 に答える
-2

ソリューションのルート フォルダーに空白の .axd ファイルを作成するだけで問題は解決します。(2 ファイル: scriptresouce.asx、webresource.asxd)

于 2010-05-18T10:30:31.190 に答える