如何在WCF服务中使用RequestContext进行MapPath映射

13

这篇MSDN文章说:

当从WCF服务内部访问时,HttpContext:Current始终为Null。请改用RequestContext。

我想做的是从我的IIS托管WCF服务中加载一些XSD文件。问题是,我无法像在任何老式的ASP.NET网站中那样使用Server.MapPath()进行定位,例如:

HttpContext.Current.Server.MapPath(schemaUri);

在一个IIS托管的WCF服务中,使用RequestContext有什么等效的方法呢?

这些模式文件位于服务应用程序根目录下的“Schemas”目录中。它们使用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个回答

39

2
哇!太棒了!这甚至可以在单元测试项目中使用!非常感谢! - Didaxis
如果您跟随链接,您将找到HostingEnvironment类的命名空间为System.Web.Hosting。 - eric1825

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