私のサイトのaspxページのパスがプリコンパイルされていると、コンパイルされたバージョン(dllまたはその他)へのパスを、リフレクションによってプロパティ、メソッド、クラスを調べることができますか?リフレクションのaspxページのコンパイルされたバージョンを取得する方法
または、他の方法では、aspxページからメソッド/プロパティリストを生成できますか?
私のサイトのaspxページのパスがプリコンパイルされていると、コンパイルされたバージョン(dllまたはその他)へのパスを、リフレクションによってプロパティ、メソッド、クラスを調べることができますか?リフレクションのaspxページのコンパイルされたバージョンを取得する方法
または、他の方法では、aspxページからメソッド/プロパティリストを生成できますか?
あなたの探しているものは、あなたのサーバーのbinフォルダにあるはずです。セキュリティ上の問題のため、ブラウザからbinフォルダにアクセスすることはできません。そのため、サーバーのISSフォルダをftpクライアントで開くか、サーバーからローカルに開く必要があります。その後、それをダウンロードしたらリフレクターを使用することができます。
私は両方が同じアセンブリにあるべきだと思います。これをテストすることができます。
ちょうどあなたのaspxページの最上部に次のコードをドロップ:
<%=this.GetType().Assembly.Location %>
これはあなたのDLLのディレクトリを提供します。または、これを行うこともできます。
<%=typeof(MyWebsite.TargetPageType).Assembly.Location %>
あなたが検討したいページのタイプを置き換えることができます。
あなたはおそらくこれを使用することができます:
System.Web.Compilation.BuildManager.GetCompiledType(Me.Request.Url.AbsolutePath)
ASP.Netは、基本的には、あなたは彼らがそこにいることを確認するために、BuildManagerを使用する必要があることを意味する、オンデマンドでページをコンパイルします。基本的には、それが最新であるかどうかをチェックし、そうでなければアセンブリを作成します。
var pg = System.Web.Compilation.BuildManager.GetCompiledType([relative path]);
ページを開いている場合は、それはもちろん簡単です:動的にそのパスからアセンブリをロードするようにAssembly.Locationを使用して
var pg = this;
その他の情報ここに
すべてが正しくないであり、アプリケーションを壊すことさえあります。そうすれば、古いアセンブリを読み込む危険があります。そして、ASP.NETワーカーがそれを再コンパイルしなければならないときは、名前の競合のために新しいアセンブリの読み込みが失敗する可能性があります。古いコードも見ています。それを短くするには:Do not Do That。