- PR -

AjaxControlToolkitを使用したサイトで、IE6だとエラーが発生する

投稿者投稿内容
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2008-05-21 18:55
引用:

りんごさんの書き込み (2008-05-21 16:50) より:

正常に表示されないとは、CollapsiblePanelExtenderが機能せずにすべてのパネルが表示されていたり、
HoverMenuExtenderが機能せずにすべてのパネルが表示されているという状況です。


これは Javascript エラーが発生して、うまく表示されないということですね。
その時のHTMLってどうなっていますか?
script タグで該当の Extender の Javascript がロードされているか確認できますか?
Firebug やらを使うと確認しやすいですよ。

引用:

また、どの環境でも、ポストバックが起きるとすぐにセッションが切れてしまいます。
ただし、ローカルでデバックをするとセッションは切れずに正常に動きます。

セッションが切れてしまうのは、AjaxControlToolkitとは無関係なのでしょうか?


なんでだろう。
ちなみに web.config のセッションの設定ってどうなっています?

引用:

ダウンロードしたToolkitに問題があるとしたら、ダウンロードし直して参照の追加をやり直せば良いということですよね。
ちなみにdllファイルが変更されることによって動かなくなる、という問題もあり得ますか?


はい、バージョンごとに動作が微妙に違うはずなので、再テストする必要があります。
_________________
かるあ のメモスニペット
りんご
会議室デビュー日: 2008/05/15
投稿数: 15
投稿日時: 2008-05-22 17:35
引用:

引用:

その時のHTMLってどうなっていますか?
script タグで該当の Extender の Javascript がロードされているか確認できますか?
Firebug やらを使うと確認しやすいですよ。



Sys.Application.add_init(function() {
$create(AjaxControlToolkit.CollapsiblePanelBehavior, {"ClientStateFieldID":"ctl00_CollapsiblePanelExtender1_ClientState","CollapseControlID":"ctl00_Panel1_menu","CollapsedImage":"./Img/collapse.PNG","ExpandControlID":"ctl00_Panel1_menu","ExpandedImage":"./Img/expand.PNG","ImageControlID":"ctl00_Image1","id":"ctl00_CollapsiblePanelExtender1"}, null, null, $get("ctl00_Panel_target"));
});

上記のようなJavaScriptはちゃんとHTMLに記述されています。
Firebug、と指摘されて気づいたのですが、IEのバージョンばかり気にしていて、irefoxで検証していませんでした…
で、検証を行ったところ、エラーも起きず、AjaxContorolも表示され、さらにポストバックが起きてもセッションが切れませんでした。
つまり、Firefoxなら何の問題も起こらない、ということです。。。

Firefoxで表示したときのHTMLとIE6で表示したときのHTMLを比較してみましたが、
多少の差異はありましたが、だいたい内容は同じでした。

さらに奥が深く感じられてきました…


また、調査をしている中で、「Version 3.0.11119.0はVisual Studio 2008をインストールする前にインストールしてはダメだ」という記述を発見しました。
私は今Visual Studio 2005で開発しております。
もしかしてこれも問題のひとつとなっているのでしょうか。

引用:

ちなみに web.config のセッションの設定ってどうなっています?


web.configは以下の通りです。引き続き宜しくお願い致します!!

<?xml version="1.0"?>
<configuration>
<configSections>
<sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
<sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="Everywhere"/>
<section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
<section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
</sectionGroup>
</sectionGroup>
</sectionGroup>
</configSections>
<connectionStrings>
<add name="RenshuConnectionString" connectionString="Data Source=10.88.1.102;Initial Catalog=Renshu;Integrated Security=True" providerName="System.Data.SqlClient"/>
<add name="ANKENConnectionString" connectionString="Data Source=PE2850;Initial Catalog=ANKEN;Integrated Security=True" providerName="System.Data.SqlClient"/>
</connectionStrings>
<appSettings>
<!-- アップロード最大サイズ設定-->
<add key="ULMaxSize" value="10240"/>
</appSettings>
<system.web>
<pages>
<controls>
<add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add namespace="AjaxControlToolkit" assembly="AjaxControlToolkit" tagPrefix="ajaxToolkit"/>
</controls>
</pages>
<globalization responseHeaderEncoding="Shift-jis" requestEncoding="shift_jis" responseEncoding="shift_jis"/>
<!--
Set compilation debug="true" to insert debugging
symbols into the compiled page. Because this
affects performance, set this value to true only
during development.
-->
<compilation debug="true">
<assemblies>
<add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add assembly="System.Web.Extensions.Design, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Drawing.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Xml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Web.Services, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<!--<add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Web.Extensions.Design, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Web.Extensions.Design, 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=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
</httpHandlers>
<httpModules>
<add name="Session" type="System.Web.SessionState.SessionStateModule"/>
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</httpModules>
<!--カスタムエラー-->
<customErrors mode="Off" defaultRedirect="401_CustomError.aspx">
<error statusCode="403" redirect="403_CustomError.htm"/>
<error statusCode="404" redirect="404_CustomError.htm"/>
</customErrors>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<modules>
<add name="ScriptModule" preCondition="integratedMode" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.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=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.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=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</handlers>
</system.webServer>
</configuration>





りんご
会議室デビュー日: 2008/05/15
投稿数: 15
投稿日時: 2008-05-27 11:31
他サイトに同じアプリを乗せて、検証してみました。
以下はいろいろな環境でアクセスしてみた結果です。

                      AjaxControl表示 セッション
現在利用しているIISポート番号・IE6   ⇒   ×      ×
現在利用しているIISポート番号・IE7   ⇒   ○      ×
現在利用しているIISポート番号・Firefox ⇒  ○      ○
同環境IISの別のポート番号・IE6     ⇒   ×      ○
同環境IISの別のポート番号・IE7     ⇒   ○      ○

ある環境では問題なく動いているので、アプリの問題ではなくサーバの問題かと思い始めました。
IISの設定がおかしいのではないかと認識しているのですが、どの項目がおかしいのかまではつかめていません。
セッション保持に関して問題の起きていない、別ポート上のサイトの設定内容と比較したのですが、違いは見られませんでした。





[ メッセージ編集済み 編集者: りんご 編集日時 2008-05-27 11:32 ]

[ メッセージ編集済み 編集者: りんご 編集日時 2008-05-27 11:33 ]

[ メッセージ編集済み 編集者: りんご 編集日時 2008-05-27 11:33 ]

[ メッセージ編集済み 編集者: りんご 編集日時 2008-05-27 11:34 ]
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2008-05-27 11:47
AjaxControlToolkitは使ったことないですが。

>Sys.Application.add_init(function() {
$create(AjaxControlToolkit.CollapsiblePanelBehavior, {"ClientStateFieldID":"ctl00_CollapsiblePanelExtender1_ClientState","CollapseControlID":"ctl00_Panel1_menu","CollapsedImage":"./Img/collapse.PNG","ExpandControlID":"ctl00_Panel1_menu","ExpandedImage":"./Img/expand.PNG","ImageControlID":"ctl00_Image1","id":"ctl00_CollapsiblePanelExtender1"}, null, null, $get("ctl00_Panel_target"));
});

これじゃなくて、これが実行されるために事前にロードされているべきライブラリが、ロードされていないということでしょう。
これのための<script>タグはどうなってるんでしょう?
またそのレスポンスは?
りんご
会議室デビュー日: 2008/05/15
投稿数: 15
投稿日時: 2008-05-28 12:04
mioさん
ご指摘ありがとうございます。
引用:

これじゃなくて、これが実行されるために事前にロードされているべきライブラリが、ロードされていないということでしょう。


とのことですが、ロードされているべきライブラリがロードされていなかったとして、
それでもFirefoxでは動くものなのでしょうか?
引用:

これのための<script>タグはどうなってるんでしょう?


とのことですが、下記の部分が<script>タグに含まれる部分なのですが、
これのための<script>タグとは、どのような記述の部分を指しているのでしょうか。

>Sys.Application.add_init(function() {
$create(AjaxControlToolkit.CollapsiblePanelBehavior, {"ClientStateFieldID":"ctl00_CollapsiblePanelExtender1_ClientState","CollapseControlID":"ctl00_Panel1_menu","CollapsedImage":"./Img/collapse.PNG","ExpandControlID":"ctl00_Panel1_menu","ExpandedImage":"./Img/expand.PNG","ImageControlID":"ctl00_Image1","id":"ctl00_CollapsiblePanelExtender1"}, null, null, $get("ctl00_Panel_target"));
});

知識が少なく申し訳ありませんが、是非お教えください。
宜しくお願い致します。

スキルアップ/キャリアアップ(JOB@IT)