2

Azure Service Busから中継できるRESTサービスをホストしようとしています。このブログを見たところ、質問に答えられるように見えましたが、残念ながら同じ結果が得られました。

これは、ブラウザでサービスをヒットしようとしたときに受け取る例外です。

ASP.NET互換性をサポートしていないため、サービスをアクティブ化できません。このアプリケーションでは、ASP.NET互換性が有効になっています。web.configでASP.NET互換モードをオフにするか、AspNetCompatibilityRequirements属性を、RequirementsMode設定が「Allowed」または「Required」のサービスタイプに追加します。

ServiceHostFactoryAzure Service Busに(経由でbasicHttpRelayBinding)接続するからAzure Endpoint登録を除外すると、このエラーは発生せず、ローカルでサービスにアクセスできます。これは、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>

何か案は?

4

1 に答える 1

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

于 2012-05-31T20:44:57.547 に答える