2つのASP.NETアプリケーションがあります。App1とApp2としましょう。
App1からServer.MapPath( "/ App2")を呼び出すと、App2アプリケーションの物理パスを取得します。
IISでApp2のパスを変更し、App1からServer.MapPath( "/ App2")を再度呼び出すと、同じ結果が得られます。
App1を再起動して、気づいてから変更する必要があります。
App1を再起動せずにこれについてできることはありますか?
Server.MapPath()
この事実をほのめかすドキュメントはないようですが、への呼び出しはパフォーマンスのためにキャッシュされている可能性があります。
次のコードでこれをバイパスできます
免責事項-これは大規模なハックですが、それは仕事をします
Server.MapPath("/App2/" + Guid.NewGuid()).Substring(0,Server.MapPath("/App2/" + Guid.NewGuid()).Length-36)
そうです、App1を再起動せずにこれについてできることがありますが、おそらくやりたくないでしょう。
Server.MapPath()
IISで宣言された仮想パスに依存しています。アプリを再起動せずに変更が表示されるのを遅らせる内部IISキャッシュメカニズムがあるかもしれませんが、IIS仮想ディレクトリへの変更を再起動せずに更新する方法はないと思います。
おそらくHostingEnvironment.MapPath()
、代わりにそれが正しいパスを取得するかどうかを確認してServer.MapPath()
みてくださいHostingEnvironment.MapPath()
。