DOBON.NETプログラミング道掲示板

[ 最新記事及び返信フォームをトピックトップへ ]

■34063 / inTopicNo.1)  ASP.NETから呼ばれているかどうか判定する方法
  
□投稿者/ ぺんたごん 一般人(29回)-(2018/12/12(Wed) 11:45:42)
  • アイコン環境/言語:[.NET 4.5.2] 
    分類:[.NET] 

    こんにちわ。

    今回、クラスライブラリを作っています。
    これはWinForms、WPFやASP.NETなどからも使用可能なものとしています。
    ここで、ASP.NETから呼び出されたときだけ挙動を少し変えようとしていますが、
    なにか良い方法は有りますでしょうか。

    ひとつ思いついたのは、エントリとなったアセンブリ名を取得し、
    w3wp.exeだった場合はASP.NETだと判定する方法ですが、
    もしWinFormsなどでexe名がw3wpだと誤判定する問題が有ります…

    どうかよろしくお願いします。
マルチポストを報告
違反を報告
引用返信 削除キー/
■34064 / inTopicNo.2)  Re[1]: ASP.NETから呼ばれているかどうか判定する方法
□投稿者/ shu 大御所(483回)-(2018/12/12(Wed) 17:02:13)
  • アイコンNo34063に返信(ぺんたごんさんの記事)

    起動モードをパラメータとして渡すようにして、その内容で
    判断するようにしておいた方がよいと思います。


違反を報告
引用返信 削除キー/
■34065 / inTopicNo.3)  Re[1]: ASP.NETから呼ばれているかどうか判定する方法
□投稿者/ 魔界の仮面弁士 大御所(1181回)-(2018/12/12(Wed) 17:33:17)
  • アイコンNo34063に返信(ぺんたごんさんの記事)
    > ここで、ASP.NETから呼び出されたときだけ挙動を少し変えようとしていますが、

    たとえば、下記のような代替策では駄目でしょうか。

    ・.config ファイルで挙動を指定する設計にする
    ・挙動を変更するための初期化パラメーターを呼び出し元から指定できるようにする
    ・プリプロセッサにより、それぞれの呼び出し元ごとに別のアセンブリとしてコンパイルする

    > w3wp.exeだった場合はASP.NETだと判定する方法ですが、
    aspnet_wp.exe という可能性もあるかも。


    > もしWinFormsなどでexe名がw3wpだと誤判定する問題が有ります…
    (同じファイル名にする明確な理由が思い当たらなかった…)

    WinForms と ASP.NET の二択で良ければ、Environment.UserInteractive あたりが
    つかえるかもしれません。他のサービスから利用する可能性があるなら駄目ですが。

    あるいは、Principal を判定する方法もありそうですが、こちらは認証方法次第ですね。

    あとは System.Web.Hosting.HostingEnvironment.IsHosted とかかな…。


    方法を考えるにしても、その切替が必要となった理由次第と言えるので、
    どういった挙動変更をどのような目的で行いたいのかといった
    具体的な背景が分かると助かります。
違反を報告
引用返信 削除キー/
■34066 / inTopicNo.4)  Re[2]: ASP.NETから呼ばれているかどうか判定する方法
□投稿者/ ぺんたごん 一般人(30回)-(2018/12/13(Thu) 13:44:29)
  • アイコンありがとうございます。

    プロセス名については、作ってるのはあくまでライブラリなので
    誰がどんなexe名にするか不明なため最悪なパターンとして被るなぁという意味でした。
    プロパティで外から設定してもらうことにし、
    誰かがASP.NETで作ってて設定し忘れた場合は自己責任ということにします。

    ありがとうございました。
解決み!
違反を報告
引用返信 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

Mode/  Pass/


- Child Tree -