获取wcf服务程序集中的文件路径

时间:2011-05-30 12:44:26

标签: c# .net wcf .net-assembly filepath

我有一个由IIS中托管的WCF服务引用的程序集。程序集使用了一些XSLT文件,我很困惑在哪里转储这些文件要么在程序集项目本身或在WCF服务端创建文件夹,以及如何在程序集中获取xslt文件的物理路径?

4 个答案:

答案 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(“〜/”);             }