none
ASP.NET Ajax Control Toolkit サンプルでエラー RRS feed

  • 質問

  • 公式ページのサンプルにアクセスすると、エラーが発生します。

    信頼済みサイトに追加して実行してみましたが、結果は同じでした。

    何か解決方法はありますでしょうか。よろしくお願い致します。

    [環境]

    OS:Windows XP Pro SP3

    ブラウザ:IE8.0.6001.18702

    以下、ModalPopupにアクセスしたときのエラーになります。

    Web ページ エラーの詳細

    ユーザー エージェント: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322; .NET4.0C; .NET4.0E; InfoPath.3)
    タイムスタンプ: Mon, 12 Nov 2012 11:00:33 UTC


    メッセージ: 文字が正しくありません。
    ライン: 1
    文字: 1
    コード: 0
    URI: ttp://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/ScriptResource.axd?d=rPXPQ_YPymN6hu79PfIYQ8Oib0VxRpOPUuVcO4wDGcnuBaj7ErGva0WFyEKwm4spjTOwKLaGZaNV9owMe7563ZTeNYnXItVFDgLHgue4k_PmcS_epdM0GXkc4YiEgupyLj0KO-Taja0LyhJnl_oPwQ2&t=ffffffffe81e7100


    メッセージ: ASP.NET Ajax client-side framework failed to load.
    ライン: 39
    文字: 34
    コード: 0
    URI: ttp://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/ModalPopup/ModalPopup.aspx


    メッセージ: 文字が正しくありません。
    ライン: 1
    文字: 1
    コード: 0
    URI: ttp://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/ScriptResource.axd?d=HZzrxCgEoGiLTFdkYpZbkv-TaqRVx_xMNt36Zd79aARTlXGjnKcHYjQVT0vhmV0WQzYf2HJM3kKy7wrVb35cM5Fh3d-02-H5sMJ8csLbwNTTmRgJ-8BnZ28k7dKamfRDQ4_Mcr3jl05xE3DOQBV4Rw2&t=ffffffffe81e7100


    メッセージ: 'Sys' は宣言されていません。
    ライン: 3
    文字: 74
    コード: 0
    URI: ttp://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/CombineScriptsHandler.ashx?_TSM_HiddenField_=ctl00_SampleContent_ScriptManager1_HiddenField&_TSM_CombinedScripts_=%3b%3bAjaxControlToolkit%2c+Version%3d3.5.60501.0%2c+Culture%3dneutral%2c+PublicKeyToken%3d28f01b0e84b6d53e%3aen%3a61715ba4-0922-4e75-a2be-d80670612837%3af2c8e708%3ade1feab2%3a720a52bf%3af9cec9bc%3a589eaa30%3aa67c2700%3aab09e3fe%3a87104b7c%3a8613aea7%3a3202a5a2%3abe6fb298%3a4a2c8239


    メッセージ: 'Sys' は宣言されていません。
    ライン: 216
    文字: 1
    コード: 0
    URI: ttp://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/ModalPopup/ModalPopup.aspx


    メッセージ: オブジェクトを指定してください。
    ライン: 445
    文字: 9
    コード: 0
    URI: ttp://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/ModalPopup/ModalPopup.aspx


    メッセージ: 'Sys' は宣言されていません。
    ライン: 459
    文字: 135
    コード: 0
    URI: ttp://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/ModalPopup/ModalPopup.aspx

     

    2012年11月12日 11:05

回答

  • > インターネットオプションの詳細設定で「プロキシ接続で
    > http1.1を使用する」にチェックが入っていない場合、質問
    > にあるエラーが発生するようです。

    以下のページに書かれているのと同じ、スクリプトファイル
    の圧縮/解凍の不具合の問題のようです。

    ToolkitScriptManager ignores accept-encoding http header
    http://ajaxcontroltoolkit.codeplex.com/workitem/26843


    原因は、ToolkitScriptManager が常に gzip で圧縮したスク
    リプトファイルを送信することと、IE は「HTTP 1.1 を使用す
    る」にチェックを入れた時しか解凍しないことです。

    詳しく書くと、以下のようになっていると思います。

    (1) IE の設定で「HTTP 1.1 を使用する」(プロキシ使用の場
      合は「プロキシ接続で HTTP 1.1 を使用する」)のチェッ
      クを外すと、要求ヘッダには Accept-Encoding は含まれな
      くなるが、応答の html コードの script 要素の src 属性
      に設定される ScriptResource.axd?d=...&t=...は同は変わ
      らない。

      特に d パラメータが同じになることに注意。パラメータ d,
      t の詳細については以下のページを参考にしてください。

      ASP.NET AJAX アプリケーションの国際化
      http://msdn.microsoft.com/ja-jp/magazine/cc135974.aspx

    (2) チェックを外すことにより、IE は解凍しなくなる。(応
      答ヘッダに Content-Encoding: gzip が含まれるが、無視
      される)。

    (3) サーバーは ScriptResource.axd?d=...&t=... の要求を受
      けると、 ScriptResourceHandler という HTTP ハンドラが
      d パラメータを復号して(暗号化されている)、必要なリ
      ソースを調べて取得しブラウザに送信する。

      このとき、復号した d パラメータの最初の文字が Z だっ
      たら gzip で圧縮するという仕組みになっています。上に
      紹介したページにも書いてありますが、実際 Z になって
      いるので圧縮します。

    (4) IE が受け取るスクリプトファイルは gzip で圧縮されてい
      るが、上記 (2) で述べたように IE は圧縮ファイルを解凍
      しない。

    (5) 結果、「文字が正しくありません。」ということでスクリ
      プトを解析できず、「'Sys' は宣言されていません。」な
      どのエラーが出る。

    IE8, IE9 で検証してみましたが、同じ問題が出ます。

    なお、.NET 標準の ScriptManager の場合は Accept-Encoding
    の有無で d パラメータが変わるので、この問題は出ません。

    • 回答としてマーク NSEOT 2012年12月25日 7:58
    2012年11月20日 13:32

すべての返信

  • ブラウザが何かなど、自分の環境ぐらいは書けませんか?

    サンプルということは、以下のページにアクセスした時エラーが出たということですか? であれば、他の PC でアクセスしたらどうでしょうか?

    ASP.NET AJAX Control Toolkit
    http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/Default.aspx

    2012年11月12日 16:08
  • Vista 上の IE8(8.0.6001.19328)でアクセスしてみましたがとくに問題はでませんでした。
    PC固有の問題かどうか、他の環境から試してみて判断していくしかないかな。

    あおい情報システム株式会社 小野修司(どっとねっとふぁん)

    2012年11月13日 1:09
  • SurferOnWwwさんへ:
    質問文に環境は書かれていますよ。

    ttpというプロトコルが何なのかはわかりませんが、httpならエラーは出ませんでした。

    2012年11月13日 2:18
  • > Sufferさん、小野さん
    そのページです。XP+IE8で発生しました。
    他の環境での動作を確認いたしました。
    XP IE8 →×
    Vista IE8→○
    Vista IE9→○
    7 IE9→○

    > 佐祐理さん
    URLを投稿できなかったため、hを省略致しました。

    2012年11月13日 5:19
  • WinXP sp3 IE8.0.6001 にて、ModalPopup は問題なく表示できます。

    問題の出ている環境では、ModalPopup 以外のサンプルは正しく閲覧できているのでしょうか? ModalPopup はエラーの例を示すためであって全面的にエラーになっていますか?

    エラー内容が ASP.NET Ajax client-side framework failed to load. とかなので、ブラウザの設定(proxy等)やウィルスチェック関係が影響している可能性がありそうです。

    2012年11月13日 6:35
  • > 質問文に環境は書かれていますよ。

    そうでした。NSEOT さん、大変失礼しました。

    同じ OS, ブラウザ(XP Pro. SP3 + IE 8.0.6001.18702)で試してみましたが、ModalPopup のページは問題なく動きます。

    ちなみに、K. Takaoka さんが指摘されている 39 行目は以下の html です。

    if (typeof(Sys) === 'undefined') throw new Error('ASP.NET Ajax client-side framework failed to load.');

    Microsoft Ajax Library が読み込めてない(または、解析できてない)ので Sys が定義されてないと言っています。その原因はわかりませんが。

    でも、NSEOT さんの PC 固有の問題には違いないと思います。XP + IE8 で動かなかったら大問題になっていて、みんな知っているはずですから。

    2012年11月13日 12:31
  • > Takaokaさん

    ModalPopupは例で全面的にエラーとなります。

    >Sufferさん

    なるほど、XP+IE8という環境でエラーが出たのは、たまたまということですね。

    質問内容とは趣旨が異なるので、ここに書くべきではないかもしれませんが、

    今製作しているアプリでも同じようなエラーが出ています。

    ただ、「ASP.NET Ajax client-side framework failed to load. 」は発生せず、

    (ということはライブラリは読み込めているが) Sysが定義されていないと言われます。

    いずれにして、Takaokaさんの言われる通り、ブラウザの設定を見直してみます。

    2012年11月14日 5:04
  • エラーメッセージの「文字が正しくありません」でググってみると同じ現象に悩んだ人がいるようです。

    以下と同じ話(IE のキャッシュが壊れている)ではないですか?

    IEで「文字が正しくありません」
    http://php.tekmemo.net/?p=1293

    何にせよ、どう考えてもクライアント側の問題で、ASP.NET は関係なさそうです。

    2012年11月14日 12:51
  • インターネットオプションの詳細設定で「プロキシ接続でhttp1.1を使用する」にチェックが入っていない場合、

    質問にあるエラーが発生するようです。

    一部のPCでは、それ以外の要因があるようで、まだ動作していません。

    その環境ではキャッシュを削除しましたが、動作は変わらないようです。調査中です。

    2012年11月19日 10:01
  • > インターネットオプションの詳細設定で「プロキシ接続で
    > http1.1を使用する」にチェックが入っていない場合、質問
    > にあるエラーが発生するようです。

    以下のページに書かれているのと同じ、スクリプトファイル
    の圧縮/解凍の不具合の問題のようです。

    ToolkitScriptManager ignores accept-encoding http header
    http://ajaxcontroltoolkit.codeplex.com/workitem/26843


    原因は、ToolkitScriptManager が常に gzip で圧縮したスク
    リプトファイルを送信することと、IE は「HTTP 1.1 を使用す
    る」にチェックを入れた時しか解凍しないことです。

    詳しく書くと、以下のようになっていると思います。

    (1) IE の設定で「HTTP 1.1 を使用する」(プロキシ使用の場
      合は「プロキシ接続で HTTP 1.1 を使用する」)のチェッ
      クを外すと、要求ヘッダには Accept-Encoding は含まれな
      くなるが、応答の html コードの script 要素の src 属性
      に設定される ScriptResource.axd?d=...&t=...は同は変わ
      らない。

      特に d パラメータが同じになることに注意。パラメータ d,
      t の詳細については以下のページを参考にしてください。

      ASP.NET AJAX アプリケーションの国際化
      http://msdn.microsoft.com/ja-jp/magazine/cc135974.aspx

    (2) チェックを外すことにより、IE は解凍しなくなる。(応
      答ヘッダに Content-Encoding: gzip が含まれるが、無視
      される)。

    (3) サーバーは ScriptResource.axd?d=...&t=... の要求を受
      けると、 ScriptResourceHandler という HTTP ハンドラが
      d パラメータを復号して(暗号化されている)、必要なリ
      ソースを調べて取得しブラウザに送信する。

      このとき、復号した d パラメータの最初の文字が Z だっ
      たら gzip で圧縮するという仕組みになっています。上に
      紹介したページにも書いてありますが、実際 Z になって
      いるので圧縮します。

    (4) IE が受け取るスクリプトファイルは gzip で圧縮されてい
      るが、上記 (2) で述べたように IE は圧縮ファイルを解凍
      しない。

    (5) 結果、「文字が正しくありません。」ということでスクリ
      プトを解析できず、「'Sys' は宣言されていません。」な
      どのエラーが出る。

    IE8, IE9 で検証してみましたが、同じ問題が出ます。

    なお、.NET 標準の ScriptManager の場合は Accept-Encoding
    の有無で d パラメータが変わるので、この問題は出ません。

    • 回答としてマーク NSEOT 2012年12月25日 7:58
    2012年11月20日 13:32