我有一个WCF服务,可以在创建时读取文件。
我将该文件添加到我的项目中,将其 Buid操作设置为内容,将复制到输出目录设置为始终复制< / em>,并使用以下命令获取文件路径:
private const string MEDIA_PLAYER_FILENAME = "mediaPlayers.xml";
var mediaPlayerFilePath = Path.Combine(Environment.CurrentDirectory, MEDIA_PLAYER_FILENAME);
当我在托管应用程序中自托管它时,这很有效,但是当它在Windows服务中托管时,它会失败,因为它尝试从 C:\ Windows \ system32 \ mediaPlayers.xml <读取它/强>
我猜Environment.CurrentDirectory
不是我应该使用的那个。它应该是什么?还是有另一个approch这样做?
答案 0 :(得分:3)
您想要的是执行程序集的路径。 CurrentDirectory不是一回事。
请参阅此帖子以获取该信息:
Getting the path of the current assembly
重新后:
(new System.Uri(Assembly.GetExecutingAssembly().CodeBase)).AbsolutePath;
或者
Assembly.GetExecutingAssembly().Location