web-dev-qa-db-ja.com

本番サーバーでのみJavaScriptエラー?

私はいくつかのasp.net Webサイトを開発から本番にリリースする過程にあります。開発ではすべてが正常に機能しているように見えますが、製品版へのリリース時に、サイトにアクセスするときにいくつかのJavaScriptエラーが発生します。これはサーバー上で何かのように見えますが、これと同じコードがテストサーバーに展開されており、同じクライアントで正常に動作します。サーバーはIIS7を使用するWindows 2008です

スローされるエラー:

いくつかの構文エラー(scriptResource)-これらのうち10

Error: syntax error
Source File: http://website.com/ScriptResource.axd?d=abc032_vah79hasdf87&t=123456789
Line: 3
Source Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

上記と同じですが、ScriptResource.axdの代わりにWebResource.axdを使用したエラー-これらのうち2つ

そして、本当の原因であると思われる2つ?

Sys is not defined

そして

WebForm_AutoFocus is not defined

-----------------補遺--------------------

提案に従って、ScriptResource.axdとWebResource.axdを調べました

デプロイされるWebアプリケーションにはフォーム認証があり、ログインページ以外のページが参照されている場合はログインページにリダイレクトされます。これはScriptResource.axdとWebResource.axdで発生しているようです(つまり、ログインページがこれらのアイテムを参照しようとすると、リダイレクトが発生するため、JavaScriptが返されず、エラーがスローされます)。

そのために、「location」タグをweb.configに追加して、すべてのユーザーがこれらのアイテムにアクセスできるようにして、ログインページが機能するようにしました(以下の関連するweb.configセクションを参照)。

<system.web>
   <authentication mode="Forms">
      <forms loginUrl="login.aspx" defaultUrl="home.aspx"/>
   </authentication>
   <authorization>
      <deny users="?"/>
      <allow users="*"/>
   </authorization>
   ...
</system.web>
<location path="ScriptResource.axd">
  <system.web>
    <authorization>
      <allow users="*"/>
      <!-- allow all users -->
    </authorization>
  </system.web>
</location>
<location path="WebResource.axd">
  <system.web>
    <authorization>
      <allow users="*"/>
      <!-- allow all users -->
    </authorization>
  </system.web>
</location>

残念ながらこれでも問題は解決していません。ロケーションタグが機能しないようにする設定/構成オプションはありますか?アプリケーションのページに同じタグを追加して(テストするため)、開発者のマシンでは機能しますが、サーバーでは機能しません。これらの場所タグをサーバーで機能させるだけですべてが機能するように見えますか?

6
ChrisHDog

この問題には2つのセクションがあり、2つの解決策がありました。

最初に、/ ScriptResource.axdおよび/WebResource.axdがWebサイトのセクションにあり、ログインページ(フォーム認証)にリダイレクトされ、必要なJavaScriptが返されなかったため、Sysが未定義でした。それらのファイルから。

次に、これらのアイテムを表示できるようにタグを追加すると、匿名アクセスが無効になっていることがわかり、タグを機能させるには匿名アクセスを有効にする必要があるようです。

1
ChrisHDog

新しいブラウザウィンドウでソースファイルの完全なURL(... ScriptResource.axd ...)を開きます。 JavaScriptコンテンツが表示されます。そうでない場合は、asp.net ajaxコンポーネントが正しくインストールされていません。

Sys is not defined

ajaxクライアント側コンポーネントが存在しないことを示し、sysクラスが見つかりません。

.net 3.5を使用している場合、それはフレームワークの一部であり、それらの問題はweb.configにあるはずです。net2.0を使用する場合、必要です ASP.NET AJAX 1. =、このmsiをサーバーにインストールすると、ファイルは.netコンポーネントの中心的な場所であるGACに移動します。msiをインストールせずに、単一のファイルSystem.Web.Extensions.dllをbinディレクトリに配置できますが、それでもweb.configファイルの正しい設定が必要ですサイト ajax.asp.net には、このすべてに関する多くの情報があります。

2
Peter Hahndorf

サーバー上のコンポーネントがないか、Web自体がASP.NET Ajaxコンポーネントを使用するように正しく構成されていない可能性があります。おそらく、開発者はAjax.NETツールキットのような別のライブラリを使用しており、サーバーにインストールする必要がありますか?

1
palehorse

私は同じ問題を抱えており、不足しているWebForm_Autofocusコードをweb.configのオプションに追跡しました。このオプションを削除またはコメントアウトすると、すべてが機能し、残りのすべてのスクリプト関数に対してjsスクリプトが生成されました。

Microsoftが対処する必要があるweb.configの問題のようです。私はVS 2010、バージョン10.0.40210.1 SPIRelを使用しており、コードは.Net 4.0をターゲットにしています。このオプションがアクティブな場合にJS生成を強制終了する基本的なプロセスを理解していません。

0
Robert Burkhall

私はこの問題を抱えていました。 WebResource.axdは、WebForms.js(System.Web.dllに埋め込まれている)を見つけることができませんでした。

サーバー上のASP.NET xxフレームワークのインストールを修復しましたが、その後は問題なく動作しました。

0

これをデバッグするには、 FiddlerTool を使用して、ページがロードしようとしているすべてのリソース(ScriptResource.axdおよびWebResource.axd)の正確な応答を確認します。 GACのアセンブリと一部のバージョンが競合している可能性があります。

この問題に関する他の投稿/ディスカッションがいくつかありますが、おそらく解決策があります:

0
splattne