我有一个WebSite项目 - ASPX,4.0。在其中我有一个文件夹,如:
bin\Xslt\Template.xslt
我想在我的类库中加载此文件。在web.config中是:
<configuration>
<appSettings>
<add key="Filepath" value=".\Xslt\Template.xslt" />
</appSettings>
</configuration>
但是,我的类库无法找到它:
mTransform = new XslCompiledTransform();
mTransform.Load(ConfigurationManager.AppSettings["Filepath"]);
抛出:Could not find a part of the path 'C:\Xslt\Template.xslt'.
我知道这里有一个问题,但我不记得正确的方法......
如何正确引用aspx \ bin \文件夹中的文件?
答案 0 :(得分:1)
使用Server.Mappath("~\xslt\template.xslt");
答案 1 :(得分:1)
尝试将密钥更改为:
<add key="Filepath" value="~/bin/Xslt/Template.xslt" />
并将您的代码更改为:
mTransform.Load(HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["Filepath"]));
答案 2 :(得分:0)
尝试在您的网络配置中提供完整路径 例如,如果您的文件位于C:\ VSPROJECTS \ bin \ Xslt \ Template.xslt
然后在你的webconfig中将其写为
&LT; add key =“Filepath”value =“C:\ VSPROJECTS \ bin \ Xslt \ Template.xslt”/&gt;
答案 3 :(得分: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
也可以解决问题......