

C#のasp.netの複数のWebプログラム上で、設定ファイルをカレントフォルダからの相対パスで読込したいと考えております。

フォルダ構成例は以下でAアプリのイベントからはAアプリのaaa.xmlを参照できる、BアプリのイベントからはＢアプリのaaa.xmlが参照できるようにしたいです。

IISルートフォルダ¥  
¥Aアプリ¥Properties¥aaa.xml  
¥Bアプリ¥Properties¥aaa.xml

実現できる方式はありますでしょうか？

.NET は4.6.2  
IISの動作サーバは、Windows Server 2016となります。


CC BY-SA 4.0
2019-12-09T09:58:22.153
61265
2019-12-09T19:44:04.500
2019-12-09T16:22:48.370
9228
9228
question
c# asp.net
IIS ワーカープロセスの複数のアプリから相対パス指定で設定ファイルを読み込む方法はありますか？


IIS ＋ .NET Framework の場合は [MapPath](https://docs.microsoft.com/ja-
jp/dotnet/api/system.web.httprequest.mappath?view=netframework-4.8) を使います。

`カレントフォルダからの相対パス` ではなくて Web ルートからの相対パスで指定します。

[code]

    string fullpath = Request.MapPath("~/config/aaa.config");
    
[/code]

`~/` が アプリケーションの TOP ディレクトリで `IISルートフォルダ¥Aアプリ` の部分に置き換わります。  
IIS 管理コンソールで 仮想パスを設定した場合には その仮想パスに対応する実フォルダが参照できます。

### 重要：セキュリティーの考慮事項

IIS で注意するのは 予期せず その設定ファイルが外部から見えてしまうという事故を防ぐために  
設定ファイルの拡張子は `.xml` ではなく `.config` の方がいいと思います。  
IIS では デフォルト設定で 拡張子 によって HTTP アクセスが許可、拒否の設定が入っています。  
フォルダ単位の 拒否設定を忘れても、拡張子によって拒否されれば、間違ってファイルが外部から見える事が防げます。


CC BY-SA 4.0
2019-12-09T19:44:04.500
61280
2019-12-09T19:44:04.500
18851
61265
answer