如何在 WCF 服务中使用 RequestContext 映射路径

Posted

技术标签:

【中文标题】如何在 WCF 服务中使用 RequestContext 映射路径【英文标题】:How to MapPath with RequestContext in WCF Service 【发布时间】:2012-05-10 05:22:47 【问题描述】:

这个MSDN article 说:

HttpContext: Current is always null when accessed from within a WCF service. Use RequestContext instead.

我正在尝试从我的 IIS 托管 WCF 服务加载一些 XSD 文件。问题是,我不知道如何像在任何旧的香草 ASP.NET 网站中那样执行 Server.MapPath(),例如:

HttpContext.Current.Server.MapPath(schemaUri);

在 IIS 托管的 WCF 服务中使用 RequestContext 的等效方法是什么?

架构位于服务应用程序根目录的“架构”目录中。使用 web.config 中的自定义配置部分引用它们,如下所示:

<schemas>
    <add uri="~/Schemas/foo.xsd" xmlNamespace="http://foo.bar/types" />
</schemas>

我试图像这样加载:

var schemaUri = HttpContext.Current.Server.MapPath(schema.Uri);

这在普通的 ASP.NET 网站中运行良好,而不是在 IIS 托管的 WCF 服务中。

【问题讨论】:

【参考方案1】:

您可以使用HostingEnvironment.MapPath。

【讨论】:

哇!甜的!这甚至适用于 UnitTest 项目!非常感谢! 如果您点击链接,您会发现 HostingEnvironment 类的命名空间是 System.Web.Hosting

以上是关于如何在 WCF 服务中使用 RequestContext 映射路径的主要内容,如果未能解决你的问题,请参考以下文章

如何在 WCF 服务中使用 RequestContext 映射路径

如何在虚拟机中使用托管在 Windows 服务中的 WCF

如何在具有 WCF 服务参考的客户端中使用 IssuedToken

如何使用wcf服务整合paypal?

如何在 azure wcf 中继中处理双工 wcf

如何在 ajax 客户端中使用作为 Windows 服务运行的 wcf 服务