WCF服务在IIS中托管时的相对路径

7
我正在使用WCF快速搭建一个数据服务,供公共Silverlight 2.0应用程序访问。由于我的数据非常静态且相对简单,所以我希望将其存储在本地XML文件中(由于几乎没有人会编辑它,这使得存储更加容易)。
我想知道从我的服务内部找到相对路径的最佳方法是什么。在传统的ASP.NET中,我可以使用Server.MapPath...但在这个WCF服务中没有类似的功能。此解决方案最终将托管在我无法控制的托管提供商上,因此我不能硬编码任何固定位置。我更愿意获取到AppData文件夹中一些XML文件的相对路径。
有什么建议吗?
5个回答

11

您可以尝试使用 Environment.CurrentDirectory 或 AppDomain.CurrentDomain.BaseDirectory。


4
AppDomain.CurrentDomain.BaseDirectory 返回正确的路径,但是 Environment.CurrentDirectory 似乎返回 {program files} 文件夹中的一些路径。感谢您的帮助。 - Karthik Mahalingam


2

WCF服务仍然可以访问与ASP.NET页面相同的许多内容(因为最终仍然存在HTTP请求和响应)。您仍然可以像这样使用Server.MapPath:

HttpContext.Current.Server.MapPath(...)

1
只有在启用ASP.NET兼容模式时才能正常工作,除非您想将现有的ASMX Web服务转移到WCF,否则很少有这样做的原因。 - Mark Seemann

1

你可以将文件存储在隔离存储中,而不是应用程序的文件夹中。查看链接页面上的示例,了解它的工作原理。


0
首先,向服务添加一个操作以返回当前目录。让新操作只返回Environment.CurrentDirectory。在客户端中,检查当前目录是否令您惊讶。根据需要进行调整。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接