我有一个程序集,被托管在IIS中的WCF服务中。该程序集使用了一些XSLT文件,我不确定应该将这些文件放在程序集项目自身中创建的文件夹中,还是放在WCF服务端,并且我该如何在程序集中获取xslt文件的物理路径?
我有一个程序集,被托管在IIS中的WCF服务中。该程序集使用了一些XSLT文件,我不确定应该将这些文件放在程序集项目自身中创建的文件夹中,还是放在WCF服务端,并且我该如何在程序集中获取xslt文件的物理路径?
由于托管在IIS上的WCF服务通常只会将DLL复制到临时文件夹中,而不是将设置为输出的项目内容复制过去,因此需要引用DLL的实际代码库。
var codeBase = System.Reflection.Assembly.GetCallingAssembly().CodeBase;
codeBase = codeBase.Substring(8); //Remove the "file:///" prefix in front of the actual path.
var dir = codeBase.Substring(0, codeBase.LastIndexOf("/", System.StringComparison.Ordinal) + 1); //Cut out the dll file name.
var file = @"ErrorMessages.xml";
var targetPath = dir + file;
var dllPath = Path.GetDirectoryName(
System.Reflection.Assembly.GetExecutingAssembly().Location);
var targetPath = Path.Combine(dllPath, "XsltFolder");
尝试使用AppDomain.CurrentDomain.RelativeSearchPath。
任何XSLT或XML文件都应该相对于WCF服务文件夹的根目录放置,可以通过以下方式获得根目录:
if (HttpContext.Current != null) { // "~/" 会给出WCF服务虚拟目录的根物理文件夹,例如:E:\PhyPath\WCFServiceFolder\ RequestPhysicalPath = HttpContext.Current.Server.MapPath("~/"); }