2011-07-16 15 views
0

私はWebSiteプロジェクトASPX 4.0を持っています。ASPX - Webサイトのフォルダへのパスは何ですか?

bin\Xslt\Template.xslt

私は私のクラスライブラリでこのファイルをロードします。その中で私のようなフォルダがあります。

<configuration> 
    <appSettings> 
     <add key="Filepath" value=".\Xslt\Template.xslt" /> 
    </appSettings> 
</configuration> 

しかし、私のクラスライブラリは、それを見つけることができません:web.configファイルである

mTransform = new XslCompiledTransform(); 
mTransform.Load(ConfigurationManager.AppSettings["Filepath"]); 

例外:Could not find a part of the path 'C:\Xslt\Template.xslt'. 私はここでキャッチがあります知っているが、私は適切に思い出すことができませんway ...

aspx \ bin \フォルダ内のファイルを正しく参照するには?

答えて

0

をし、私は)のSystem.Webへの依存を追加したくなかった。

string codeBase = Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase); 
string filepathRelative = ConfigurationManager.AppSettings["Filepath"]; 

string fullFilepath = Path.Combine(codeBase, filepathRelative); 

おかげ

編集System.AppDomain.CurrentDomain.BaseDirectoryもトリックを行い...

1

使用Server.Mappath("~\xslt\template.xslt");

1

にあなたの鍵を変更してみてください:あなたの場合は、あなたのWeb構成 例で完全なパスを与えるようにしてください

mTransform.Load(HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["Filepath"])); 
+0

を、このクラスであるので、ライブラリ、私はSystem.Webへの参照を追加することを避けたいと思います... – veljkoz

0

<add key="Filepath" value="~/bin/Xslt/Template.xslt" /> 

とするようにコードを変更しますファイルはC:\ VSPROJECTS \ bin \ Xslt \ Template.xsltにあります。

は、次に、あなたのWebConfigに
<としてそれを書くキー= "ファイルパス" 値= "C:\ VSPROJECTS \ binに\ XSLT \ Template.xslt" を追加、それはアセンブリ内なので(私は方法を見つけた/>

+0

絶対パスは実稼働環境への展開で変更され、展開の詳細に依存することを最小限に抑えたいと思います... – veljkoz

関連する問題