是否可以将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”类型。