作業中のASP.Net/AJAXコントロールキットプロジェクトがあります。 80%の時間は問題ありません。ページは正常に実行されます。ページを更新すると、「Sys is undefined」というjavascriptエラーが表示されることがあります。
常に発生するわけではありませんが、再現可能です。その場合、ユーザーはブラウザをシャットダウンしてページを再度開く必要があります。
これは、それがIIS設定である可能性があると信じるようになります。
別のメモ。エラーが発生したときとそうでないときの両方で、ページのソースを確認しました。ページでエラーがスローされると、次のコードが欠落しています。
<script src="/ScriptResource.axd?d=EAvfjPfYejDh0Z2Zq5zTR_TXqL0DgVcj_h1wz8cst6uXazNiprV1LnAGq3uL8N2vRbpXu46VsAMFGSgpfovx9_cO8tpy2so6Qm_0HXVGg_Y1&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>
ページのHTMLでSys。*呼び出しを含む<script type="text/javascript"></script>
ブロックを(本文の<asp:Content/>
セクションが閉じる前の最後の項目まで)下位に移動することで問題を修正しました。元々、スクリプトブロックはページのHEAD <asp:Content/>
]セクションにありました。MasterPageFileがあるページ内で作業していました。
エラーが発生したとき
in 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>
Dean Lの答え、 https://stackoverflow.com/a/1718513/29206 は、Sysへの呼び出しも早すぎたので、私にとってはうまくいきました。 jQueryを使用しているため、下に移動するのではなく、document.ready呼び出し内にスクリプトを配置します。
$(document).ready(function () {
Sys. calls here
});
これは、Sysが利用可能になるのに十分遅れているようです。
私はtelerikを使用していて、まったく同じ問題を抱えていました。
これをweb.configに追加すると問題が解決しました:)
<location path="Telerik.Web.UI.WebResource.axd">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
多分それもあなたを助けるでしょう。認証の問題でした。
ScriptManagerをこれに設定してみてください。
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true" />
次の解決策のいずれかを試してください。
1。ブラウザは圧縮スクリプトのロードに失敗します
これは通常、他のブラウザではなくIE6でエラーが発生する場合です。
スクリプトリソースハンドラ– ScriptResource.axdは、スクリプトを圧縮してからブラウザに返します。 RTM以前のリリースでは、ハンドラーはすべてのブラウザーで常に実行しており、構成できませんでした。 IE6のコンポーネントの1つに、圧縮されたスクリプトを正しくロードできないという問題があります。 KB記事 here を参照してください。 RTMビルドでは、これに対して2つの修正を行いました。1つは、IE6がブラウザークライアントである場合は圧縮しません。2つ目は、圧縮を構成可能にしました。 web.configを切り替えます。
どのように修正しますか?まず、AJAX Extensions 1.0 RTMリリース。それだけで十分です。Webを編集して圧縮をオフにすることもできます。次のように構成します。
<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 websで発生します。
仮想ディレクトリだけでなく、Webアプリケーションを使用していることを確認してください
4。 ScriptResource.axdリクエストは404を返します
これは通常、ASP.NET全体の構成の誤りを示しています。 ASP.NETのデフォルトのインストールでは、.axdで終わるリソースへのWebリクエストは、IISからisapiマッピングを介して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」を実行すると、IISでASP.NETの完全な登録が行われ、ISAPIがIIS6で有効になっていることを確認できます。また、「aspnet_regiis -s w3svc/1/root/MyWebApp」を使用して、Webアプリケーションの登録のみを修正します。
5。 ASP.NETの「Sys is undefined」エラーの解決AJAX RTM under IIS 7)
このエントリを<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-undefinedhttp://geekswithblogs.net/lorint/archive/2007/03/28/ 110161.aspx
これらの行を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>
お役に立てれば。
ページにScriptManagerがあることを確認することに加えて、web.configが適切に構成されていることを確認する必要があります。
ASP.NET AJAX 1.0がリリースされたとき(.NET 2.0の場合)、ハンドラー、コントロールなどを追加した多くのカスタムweb.config設定がありました。
設定情報はここにあります: http://www.asp.net/AJAX/documentation/live/ConfiguringASPNETAJAX.aspx
.NETと対話するクライアントスクリプトがあることを確認してください。AJAXの最後に次の行があります。
if (typeof(Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();
これは、スクリプトファイル全体が読み込まれ、クライアントメソッドの呼び出しを開始できることをスクリプトマネージャーに伝えます
このような巨大なトピックに追加するのは嫌いですが、それでもかなり後のことですが、少なくともVS2015で機能するソリューションがあると思います。
私はsysエラーの理由を見つけるために狩りをしていましたが、私のために働いた唯一の解決策はEnableCdn="true"
次のようなScriptManager
内:
<asp:ScriptManager ID="ScriptManager1" runat="server" EnableCdn="true" />
詳細については、MSDNを参照してください。
なぜこれを行う必要があるのですか?
Asp.net Webアプリケーションで作業する場合、CDNを有効にして、MicrosoftがSys.
図書館。
ページにおそらくSys
関数を使用しているスクリプトがあったでしょう。設定EnableCdn="true"
は、Sys
ライブラリーが使用される前にダウンロードされるようにします。
CDNとは?
https://www.sitepoint.com/7-reasons-to-use-a-cdn/ からの引用
ほとんどのCDNは、画像、ビデオ、オーディオクリップ、CSSファイル、JavaScriptなどの静的リソースをホストするために使用されます。一般的なJavaScriptライブラリ、HTML5シム、CSSリセット、フォント、その他のアセットをさまざまなパブリックおよびプライベートCDNシステムで利用できます。
GoogleとMicrosoftの両方にCDNがあります。必要なのは、参照を追加することだけです。通常、CDNはスクリプトリソースを介して追加されます。
<script src="https://ajax.aspnetcdn.com/ajax/4.5.1/1/MicrosoftAjax.js" type="text/javascript"></script>
EnableCdn="true"
とMicrosoftは、Sys
ライブラリをダウンロードするページに小さなCDN参照(上記のような)を追加します。
同じ問題に遭遇した人の助けになることを願っています。
私はこれと同じ問題を抱えていましたが、多くの苦労の末、問題を切り分け、スクリプトマネージャーを空のページに読み込むだけで、同じエラーが発生することになりました。私のサイトのweb.configを新しい(動作中の)テストサイトと比較して発見した問題を特定し、web.configのsystem.webセクションの<compilation debug="true">
を<compilation debug="false">
に変更すると、問題。
また、更新パネルを適切に機能させるために、system.webから<xhtmlConformance mode="Legacy"/>
エントリを削除する必要がありました。 ここをクリック この問題の説明。
私の場合、問題は、部分的なポストバック後にgridview tableheaderを保持するために次のコードを入れたことです。
protected override void OnPreRenderComplete(EventArgs e)
{
if (grv.Rows.Count > 0)
{
grv.HeaderRow.TableSection = TableRowSection.TableHeader;
}
}
このコードを削除すると、問題が停止しました。
Asp.net ajaxソリューションを個別に作成し、web.configから作業中のプロジェクトにすべてのajax構成をコピーして貼り付けることで、この問題を解決しました。
ここに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>
AjaxControlToolkit.dllを4.1.60623.0から最新バージョン4.1.7.725に更新した後、同じ問題が発生しました。私は検索してこのページにたどり着きましたが、どの回答も私を助けません。 CodePlex ZipファイルにあるAjax Control ToolkitのサンプルWebサイトを見て、<asp:ScriptManager>
が新しい<ajaxtoolkit:ToolkitScriptManager>
に置き換えられていることに気付きました。私はそうしましたが、Sys.Extendedは未定義ですはありません。
上記のいずれも機能せず、OnPreRenderCompleteをオーバーライドする場合は、base.OnPreRenderCompleteを呼び出してください。私のセラピストは私に会えてうれしいです
私の場合、非常に隠された理由が見つかりました... Global.ascx.csにこのページルートがあり、サブフォルダーのテストには表示されませんが、質問が返されますいつもエラー..奇妙な問題で別の日。
routes.MapPageRoute("siteDefault", "{culture}/", "~/default.aspx", false, new RouteValueDictionary(new { culture = "(\\w{2})|(\\w{2}-\\w{2})" }));
Web設定の正しいエントリを追加した後でも、このエラーが発生しますか?このエラーの最も一般的な理由は、Sys名前空間をあまりにも早く参照するJavaScriptです。次に、最も明らかな修正は、JavaスクリプトブロックをScriptManagerコントロールの下に移動することです。
URLを変更する書き換えルールがないことを確認してください。
私の場合、アプリケーションはURLが到達したレベルよりも深いレベルにあると考えました。
例: http://mysite.com/app/page.aspx は実際のURLでした。しかし、/ app /を削除すると、ASP.netとWCFで正常に機能しましたが、Ajaxでは明らかに無効になりました。
追加
if (typeof(Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();
リンクの説明をここに入力してください を確認してください
すべてのweb.config
ソリューションが機能せず、PageRouting(IIS 7+)を実装している場合、以下のコードスニペットで問題を解決できます。
この質問をハイジャックするつもりはありませんが、他の皆と同じ問題があり、ここで提案を100%実装しました。
私の状況では、私は Page Routing を実装していました。基本的には、約20前後で動作し、デバッグが実行されると、BAMはSys is undefined
エラー。
Clean-URLロジックについて話している他のいくつかの投稿を確認した後、PageRoutingのセットアップを行ったことを思い出しました。
パターンを作成するために使用したリソースは次のとおりです。 Page Routing
私のワンライナーコードはVS2012のデバッグの問題を修正しました:
rts.Ignore("{resource}.axd/{*pathInfo}") 'Ignores any Resource cache references, used heavily in AJAX interactions.
これは愚かに聞こえますが、VS2010で開発され、VS Dev Serverでホストされているサイトで同様の問題が発生しました。問題のページには、wcfサービスへの接続を作成するスクリプトマネージャーがありました。サービスに追加のメソッドを追加すると、このエラーが表示され始めました。
私にとってそれを修正したのは、oroject Web設定で異なるポート番号を持つ「ポートの自動割り当て」から「特定のポート」に変更することでした。
理由がわかっていれば...
私のページが一貫してSys is undefinedエラーを生成していたことを除いて、同様の問題がありました。
私にとっての問題は、.NET 2.0用のAJAX 1.0拡張機能をインストールしたばかりですが、Visual Studioで既にWebプロジェクトを作成していたという事実に起因しています。
AJAXこのエラーに遭遇し続けたコントロールを作成しようとすると、ここでSlaceとMadMax1138sの投稿を見つけました。それが私のweb.configであると考え、新しい「AJAX対応Webサイト」プロジェクトタイプ、およびweb.configにAJAXコントロールを使用するために必要な多数のカスタマイズが含まれていることを確認してください。
既に自分で作成したweb.configの更新でweb.configを更新し、既存のプロジェクトにドロップしただけで、すべて正常に機能しました。
私は同じ問題を抱えていましたが、私はそれを修正しました:
スクリプトファイルをページに配置するときは、それが
<script></script> and not <script />.
私はこれに従いました: http://forums.asp.net/t/1742435.aspx?An+element+with+id+form1+could+not+be+found+Script+error+on+page + load
これが役立つことを願って
今日、まったく同じエラーが表示されていますが、構成または直接的なJavaScriptの問題ではありません。
外部の.netプロジェクトは更新されましたが、Webサイトのコンパイルで変更が適切に反映されませんでした。私の推測では、ASP.NET ajaxは.NETオブジェクトのクライアント表現を適切に構築できなかったため、正しくロードできませんでした。
解決するために、外部プロジェクトを再構築し、問題が発生していたソリューションを再構築しました。問題はなくなりました。
同様の問題があり、驚いたことに、開発者の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>
私はこの点が追加されたとは思わず、これを探し出すのにしばらく時間を費やしたので、それが助けになることを願っています。
私は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>
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">
もう問題ありません。
サーバーに正しい時刻と日付が設定されていることを確認してください...
6時間を無駄にした後、どこかで読みました...
サーバーの日付と時刻を正しく動作させるには更新する必要があります...
そうでない場合、「Sys」は未定義エラーです。