我有一个由IIS中托管的WCF服务引用的程序集。程序集使用了一些XSLT文件,我很困惑在哪里转储这些文件要么在程序集项目本身或在WCF服务端创建文件夹,以及如何在程序集中获取xslt文件的物理路径?
答案 0 :(得分:3)
由于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;
答案 1 :(得分:1)
尝试使用AppDomain.CurrentDomain.RelativeSearchPath
答案 2 :(得分:0)
将它们放在引用的程序集的子文件夹中,将它们标记为内容并启用复制到输出目录。
然后,在需要文件路径的汇编代码中,获取正在执行的程序集的路径并将预期的子文件夹添加到路径中,例如:
var dllPath = Path.GetDirectoryName(
System.Reflection.Assembly.GetExecutingAssembly().Location);
var targetPath = Path.Combine(dllPath, "XsltFolder");
答案 3 :(得分:0)
任何XSLT或XML文件都应该相对于WCF Service文件夹的根文件夹放置,root文件夹可以实现如下:
if(HttpContext.Current!= null) { //“〜/”给出了这个Biz dll支持的WCF服务虚拟目录的根物理文件夹..., //例如:E:\ PhyPath \ WCFServiceFolder \ RequestPhysicalPath = HttpContext.Current.Server.MapPath(“〜/”); }