Azure Service Bus托管REST服务

时间:2012-05-31 18:30:09

标签: c# wcf azure azure-web-roles azureservicebus

我正在尝试托管可以从Azure Service Bus中继的REST服务 我看到this blog看起来会回答我的问题,但不幸的是,我得到的结果相同。

这是我尝试在浏览器中点击服务时收到的异常。

  

无法激活该服务,因为它不支持ASP.NET兼容性。       为此应用程序启用了ASP.NET兼容性。关闭ASP.NET兼容性       web.config中的mode或将AspNetCompatibilityRequirements属性添加到       RequireMode设置为“Allowed”或“Required”的服务类型。

如果我从连接到Azure Service Bus的ServiceHostFactory中排除Azure端点注册(通过basicHttpRelayBinding ),我不会收到此错误,我可以点击本地服务。它与托管RESTful服务(webHttpBinding)和Azure Service Bus中继绑定(basicHttpRelayBinding)有关。

在global.asax中,我添加了服务托管

protected void Application_Start(object sender, EventArgs e)
{
    // Add REST service hosting.
    RouteTable.Routes.Add(new ServiceRoute("myservice/rest",
         new CustomWebServiceHostFactory(typeof(IMyService)),
         typeof(MyServiceProvider)));
}

我按照以下方式修改了我的服务提供商:

[ServiceBehavior(IncludeExceptionDetailInFaults = true)]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class MyServiceProvider : IMyService
{
    ...
}

在IIS中运行的服务接口的web.config具有以下值:

<configSections>
    <sectionGroup name="system.serviceModel" type="System.ServiceModel.Configuration.ServiceModelSectionGroup, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
      <section name="standardEndpoints" type="System.ServiceModel.Configuration.StandardEndpointsSection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
    </sectionGroup>           
</configSections>

<system.serviceModel>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
    <standardEndpoints>
       <webHttpEndpoint>
          <standardEndpoint helpEnabled="true" automaticFormatSelectionEnabled="true">
             <security mode="None"/>
          </standardEndpoint>
       </webHttpEndpoint>
    </standardEndpoints>
...
</system.serviceModel>

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我建议您尝试我的博客,该博客显示完全相同的问题以及根本原因和解决方案,请尝试应用该建议并告诉我们:

http://blogs.msdn.com/b/avkashchauhan/archive/2011/11/17/wcf-rest-http-application-connecting-azure-service-bus-using-webhttprelaybinding-causes-aspnetcompatibilityenabled-error.aspx