none
リモーティングサービスにてThreadAbortException発生 RRS feed

  • 質問

  • お世話になっております。
    リモーティングを使用してWEBシステムを構築し、現在稼動している状態なのですが
    ASP.NET側からリモーティングサービスのメソッドを呼び出した際、以下のエラーが発生し
    困っております。使用している.NETのバージョンは3.5です。

    System.Threading.ThreadAbortException: スレッドを中止しようとしました。

    色々と調査し参考になる情報等も試してみたのですが、
    http://support.microsoft.com/default.aspx/kb/312629/ja
    http://www.kernel-net.ne.jp/tech/index.php?ASP.NET%B4%D8%CF%A2

    うまくいかず、実環境PC上にて以下の確認を行いました。
     ・web環境PC へデバッグ用のweb環境を作成し、デバッグ実行にて確認。
          リモーティングサービスPCへのアクセス/呼び出しメソッドの応答等全て、正常に完了。(WEB画面が表示された)
     ・web環境PCの稼動している本環境から再度アクセスし、同じ手順で画面を操作したが、
          エラーが発生。
      (System.Threading.ThreadAbortException: スレッドを中止しようとしました。)

    上記の通り、同じインフラ環境を用いて操作を行っても結果が異なるような状況です。
    なにか、モジュールをビルドする際にオプションの指定ミス等をしてしまっているのか
    その他なにかしらの原因があるのか、判断しかねている状態です。

    このエラーの原因を判断するよい方法/対処方法はないでしょうか?



    2010年1月27日 12:52

すべての返信

  • > ・web環境PC へデバッグ用のweb環境を作成し、デバッグ実行にて確認。

    これ、デバッグ用の環境でデバッグ実行じゃなく、本番に準じた実行したらどうなります?
    デバッグ設定で動かすことで変わる部分があるはずなので。
    あおい情報システム株式会社 小野修司(どっとねっとふぁん)
    2010年1月28日 1:13
  • 「デバッグ用の環境を作った」とは言いましても、設定ファイル関連(configファイル類)は
    全て本番と同一のものを使っているハズです。(関連するconfigを本番から持って来ています)

    「本番に準じた実行」とは、そういったことではなかったでしょうか?
    (DebugかReleaseかというお話でしょうか?それであれば既に実行し、いずれでも
     同じ状態でありました)
    2010年1月28日 1:28
  • ああ、確認してほしかったのはweb.configの以下のところです。

    <compilation debug="true">

    ここがtrueかfalseかで処理の仕方が変わるので、もしかしてtrueになっているために問題が再現しないんじゃないか、と思いました。

    どちらでも同じ、ということであればちょっと原因の推測のしようがなさそうな。。。
    ちなみに、テンポラリーフォルダの中身を消したうえで再起動しても同じ現象は続きますか?


    あおい情報システム株式会社 小野修司(どっとねっとふぁん)
    2010年1月28日 4:47
  • web.configの部分については、確認した限りは双方共にfalseなっておりました。
    (本番から持ってきたweb.configでデバッガを起動しておりました)

    双方共にfalseということで、テンポラリーフォルダの中身は空だろうと
    予測し見ておりませんでした。確認して入っていたら削除して試してみます。
    2010年1月29日 0:10
  • > 双方共にfalseということで、テンポラリーフォルダの中身は空だろうと予測し

    テンポラリーフォルダにはコンパイルされたdllが入ります。
    デバッグ実行時は自動生成されたソースコードもありますが、本番実行時もdllは必ず存在します。
    というか、ASP.NETは最初の起動時にコンパイルして作成したdllをテンポラリーフォルダに配置し、そのテンポラリーフォルダの中のdllによって実行されています。
    なので、空ということはありえません。

    このフォルダの中身を消すと、次の実行開始時にあらためてコンパイルが行われ、dllが再作成されます。
    テストのための環境をつくった場合はうまく動いているとのことなので、もしかするとdllをあらためて作成することでうまく動き始めるかもしれないと思っています。
    あおい情報システム株式会社 小野修司(どっとねっとふぁん)
    2010年1月29日 1:28
  • お返事が大変遅くなり申し訳ございません。
    ご回答頂きありがとうございます。

    本番環境にて、テンポラリーフォルダの中身は残したままで
    <compilation debug="true">
    にしたところ、動作しました。

    動作できなかった原因を調査しておりますが、
    本番環境は最終的に
    <compilation debug="false">
    として動作させるべきであると考えております。

    テンポラリフォルダのdllと設定ファイルの<compilation debug="boolean">は
    不一致になると動作しないようなこともあるのでしょうか?

    テンポラリーフォルダの中身を消して、フラグをfalseにして動作する場合
    原因として上記の内容で特定してもよいものかわからないでいます。

    2010年2月12日 14:14