Server.MapPathのオーバーヘッドを減らすには?



サイト上のテキストファイルの中身を表示するときには
通常以下の様に

Using streamReader As IO.StreamReader = New IO.StreamReader(→
Server.MapPath("./") & DirecTmp & "/" & kid & ".txt", →
System.Text.Encoding.GetEncoding("UTF-8"))
str = streamReader.ReadToEnd
End Using

のようにしますが、Server.MapPathはオーバーヘッドの大きな処理です。
Server.MapPathを使わずに処理できれば処理はずっと軽くなりますが、
すべての処理でハードコーディングしてしまうと、
アプリケーションの可搬性はかなり低下します。

そこで、web.config内に

<appSettings>
<add key="RootFolder" value="\\サーバー名\パス\LocalUser\→
ユーザー名\WEB_zatugaku\html\" />
<appSettings>

のようにしておけば、
アプリケーション内では

Dim RootDirectory As String = ConfigurationManager.AppSettings("RootFolder")

として

Using streamReader As IO.StreamReader = New IO.StreamReader(→
RootDirectory & DirecTmp & "/" & kid & ".txt", →
System.Text.Encoding.GetEncoding("UTF-8"))
str = streamReader.ReadToEnd
End Using

で呼び出す事ができます。
これならアプリケーションの移動をするときでも
web.config内の一行を書き直すだけで対応可能です。

記事id:231 / 4088PV

関連記事