- - PR -
[ASP.NET]Web.config configSectionsでXMLのFilePathと型を取得する方法(C#)
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-09-15 16:47
はじめまして。
現在 ASP.NET(Framework1.1SP1)Oracle9iで開発をしています。 <やりたいこと> XMLでエラーコードとエラーメッセージの管理を行おうと思い Web.configを使ってエラーメッセージが入っているXMLファイルの設定をあらかじめ 登録しておき、XMLファイルから自動的にファイル名称、型を取得したいのですが ConfigurationSettins.GetConfig("セクション名")と書いてみても XMLファイルで定義した型の指定に不備があり取得できません。 web.Configでtype指定をするときについて資料を探してみたのですが よくわかりません。ソースにファイルパスのべたうちはやりたくないので このやり方に限らずいい方法があったら教えていただけないでしょうか。 -------------------------Web.configの中身----------------- <configuration> <configSections> <section name="xmlFilepath" type="System.Configuration.SingleTagSectionHandler, System" />←構成にエラーがあります。というエラーが発生 </configSections> <xmlFilepath> <add key="XMLFilePath"value=@"c:\\xxxx.xml"></add> </xmlFilepath> </configuration> =======C#================================================ NameValueCollection nv=(NameValueCollection)ConfigurationSettings.GetConfig("XMLFilePath"); string []FileName = nv.GetValues(0); XmlTextReader tr = new XmlTextReader(Filename[0]);←※Filenameをフルパス指定にするとうまく取得できます XMLの定義------------------------------------------------------------------ <?xml version="1.0" encoding="utf-8" ?> <Message> <Error> <Errmsg code="xxxxx1" message="システムエラー発生"></ErrorMessage> <Errmsg code="xxxxx2" message="ダウンロード失敗"></ErrorMessage> <Errmsg code="xxxxx3" message="アップロード失敗"></ErrorMessage> </Error> </Message> | ||||
|
投稿日時: 2004-09-15 18:45
Web.configから設定値を読み込むだけでよければ、Web.configに
<appSettings>を追加して、ConfigurationSettings.AppSettings("キー") で値を取得できると思います。
| ||||
|
投稿日時: 2004-09-15 22:19
「フルパス指定にするとうまくいく」というのは、どういう意味でしょうか?(絶対パスを指定すればエラーにならないってことですか?)
「XMLファイルから自動的にファイル名称、型を取得したい」の、型とは何のことでしょうか? 「web.Configでtype指定をするときについて」のtype指定とはどういう意味でしょうか?(上記の型と同じ意味ですか?)
とりあえず、 SingleTagSectionHandlerは、<add 〜>の形式ではなく、指定した名称のタグ内に、属性を複数設定するためのセクションハンドラです。 SingleTagSectionHandlerは、Hashtableを返します。NameValueCollectionではありません。 NameValueCollectionで取得するには、NameValueSectionHandlerを指定する必要があります。 型指定とかtypeって意味は良く分かりませんが、とりあえず根本的な構成セクションの使い方から確認した方がいいと思います。 こだわる必要がなければ、kanaiさんのように<appSettings>でやってしまうのが簡単ですが(内容的にも、単体の設定項目っぽいですから、あえてセクションを追加する必要もなさそうですし)。 |
1