【发布时间】:2009-06-24 04:36:47
【问题描述】:
是否可以将REST (WCF) 服务配置为以STA 而不是MTA 运行?
为了运行旧的 COM 对象,需要这种方法。为了将 ASMX Web 服务配置为作为 STA 而不是 MTA 运行,有一种可用的解决方法,它使用 HTTPHandler 来强制 Web 服务作为 STA 运行。
Jeff Prosise 的一篇文章http://msdn.microsoft.com/en-us/magazine/cc163544.aspx 详细介绍了解决方法以及如何应用它。将相同的 HTTPHandler 应用于基于 REST 的 WCF 服务(在 Visual Studio 中使用 Create New ADO.NET Data Service)会在调用 WebServiceHandlerFactory 时产生错误(它正在传递 HTTPContext, URL 等)。
处理程序适用于 ASMX Web 服务,我可以添加一个 WebMethod,将线程模型作为 STA 返回。但是,即使在设置 ASPCompatibility 之后(在web.config 和类级别),自定义 HTTPHandler 在尝试使用 REST 服务时总是会在同一点产生错误。我没有配置任何端点,因为我使用的是带有几个“服务操作员”方法的基本 REST 服务。错误是:
无法转换类型为“System.Web.Compilation.BuildResultCustomString”的对象 输入“System.Web.Compilation.BuildResultCompiledType”。
【问题讨论】:
-
MSDN 链接实际上已损坏(它重定向到通用 MSDN 杂志页面)。