2017年2月24日金曜日

[ASP.NET]AjaxToolKitのAjaxFileUploadがうまく動かない時の対応

AJAXToolkitのAjaxFileUploadが、開発環境ではうまくいっていたのに動かなかった。
アップロードが"UploadComplete"になる前にNGになる…。

以下、Web.ConfigやIISに対して行ったまとめ。

-----------------------------------------------------------------
 ①開発時からWen.Configに以下の様なイベントハンドラを追加。
<system.web>
  <httpHandlers>
    <add verb="*" path="AjaxFileUploadHandler.axd" type="AjaxControlToolkit.AjaxFileUploadHandler, AjaxControlToolkit" />
  </httpHandlers>
</system.web>
<system.webServer>
  <handlers>
    <add name="AjaxFileUploadHandler" verb="*" path="AjaxFileUploadHandler.axd" type="AjaxControlToolkit.AjaxFileUploadHandler, AjaxControlToolkit" />
  </handlers>
</system.webServer>
これがないと開発の段階ですらどうあがいてもNG。
  http://stackoverflow.com/questions/17051845/ajaxfileupload-error


②その後サーバに移管した時にうまくいかず…。
 IIS7以上はこっちというからsystem.webserver内をこっちの書き方にした
<validation validateintegratedmodeconfiguration="false" />
<handlers>
    <add name="AjaxFileUploadHandler" verb="*">
      path="AjaxFileUploadHandler.axd"
      type="AjaxControlToolkit.AjaxFileUploadHandler, 
      AjaxControlToolkit"/>
</add></handlers>
  役にたったか否かは不明…。
 https://www.codeproject.com/Questions/773110/AjaxFileUpload-server-events-not-firing

③とりあえず仮想ディレクトリに権限与えまくった
  このサイトよかった。
 https://creativeweb.jp/tips/iis_acl/

④それでもうまくいかず。
 アプリケーションプールが統合モードならこう書けとあったから
 上記の書き方に、preCondition="integratedMode" を追加した。
 (「preCondition="integratedMode"」と書いてあるトコ参照)
http://stackoverflow.com/questions/22706303/ajaxfileupload-not-working-in-iis-7-5-and-later 

⑤それでもうまくいかず。
 よくわかんなかったが以下のサイトを見てASPXのコードのトコで
  UseAbsoluteHandlerPath="false" を加えた  
 アドレスがなんたららしいけど… 関係なさそうに見えたのにこれだったかも
https://github.com/DevExpress/AjaxControlToolkit/issues/43

-----------------------------------------------------------------
 以上でうまくいった!

0 件のコメント:

コメントを投稿