wcf客户端映射路径

wcf客户端映射路径,wcf,ssrs-2008,relative-path,Wcf,Ssrs 2008,Relative Path,WCF服务“ProjB”需要在同一解决方案中的另一个项目“ProjA”中调用函数“procpt(字符串日期)”。该函数位于处理SSR的“Common”类中。在该函数中,需要添加子报表路径。在Wcf服务端 Common cmn = new Common(); cmn.ProcRpt(t); 共同点如下: 问题是运行wcf时,子报表路径指向wcf文件夹ProjB的路径而不是ProjA的路径; 我应该如何使其返回其原始路径“ProjA/RDLC/rptSub.RDLC”。谢谢这一款有大约1000种给

WCF服务“ProjB”需要在同一解决方案中的另一个项目“ProjA”中调用函数“procpt(字符串日期)”。该函数位于处理SSR的“Common”类中。在该函数中,需要添加子报表路径。在Wcf服务端

Common cmn = new Common();
cmn.ProcRpt(t);
共同点如下:

问题是运行wcf时,子报表路径指向wcf文件夹ProjB的路径而不是ProjA的路径;
我应该如何使其返回其原始路径“ProjA/RDLC/rptSub.RDLC”。谢谢

这一款有大约1000种给猫剥皮的方法。发生这种情况的原因是,这是您的程序/服务/网站运行的实际路径,因此使用相对路径可以生成应用程序当前运行路径的子文件夹

你可以尝试的第一件事是改变你的相对路径,以适应你正在尝试做的事情。使用两个点(..)应允许您从所在位置进入文件夹,即:

"..\\ProjA\\RDLC\\rptSub.rdlc"
这可能是最“正确”的方法。您可以在web应用程序和服务中使用绝对路径,但这样做会带来安全隐患(例如在leet haxor中),他/她可能会了解您的文件系统,如果他/她知道如何在服务器的目录中移动,这将是不好的


最后,您可以(尽管需要更多的工作,但更干净)将二进制文件移动到bin文件夹中,并拥有指向这些子报表的相对路径。在最终构建中将所有二进制文件(二进制文件)放在一个位置并不是世界末日,从长远来看可能会缓解一些类似的问题。

非常感谢。问题是我遇到了错误“此处不允许相对虚拟路径“../ProjA/RDLC/rptfeetwp.RDLC”。“有趣的是……您的托管环境是什么,ReportPath是什么类型的对象(字符串、目录等)asp.net 4.0;ReportViewer.LocalReport.ReportPath应该是字符串;有什么想法吗?听起来可能很疯狂,但请尝试以下方法:HostingEnvironment.MapPath。”(VirtualPath实用性.ToAbsolute(../ProjA/RDLC/rptSub.RDLC”))如果您得到了一个HttpException,则运行应用程序的用户在运行时没有进入父文件夹的权限,这是一个安全功能。
"..\\ProjA\\RDLC\\rptSub.rdlc"