0

異なる契約に基づいて複数の RESTful サービスをホストすることを計画しています。似たような質問がたくさんありますが、私の web.config ファイルは異なって見えます。理由はわかりません。

ここに私の web.config ファイルの一部があります:

    <standardEndpoints>
          <webHttpEndpoint>
            <standardEndpoint name="" 
                              helpEnabled="true" 
                              automaticFormatSelectionEnabled="true">
            </standardEndpoint>
          </webHttpEndpoint>
    </standardEndpoints>

私のWebアプリケーションでのサービス宣言は次のとおりです。

    RouteTable.Routes.Add(new ServiceRoute("bob/chocolate", new WebServiceHostFactory(), typeof(RESTchocolate)));
    RouteTable.Routes.Add(new ServiceRoute("bob/vanilla", new WebServiceHostFactory(), typeof(RESTvanilla)));

最初のルートのみが機能しているようです (.NET の "bob/chocolate/help" エンドポイント機能を使用して使用可能なメソッドを一覧表示することをテストしました)。これを行う方法を知っている人はいますか?何か他のものを変更する必要がありますか?

疑問に思っている人のために、私の契約は有効です。

ブラウザで 2 番目のエンドポイントに到達しようとすると、適切な .NET ディスプレイに「エンドポイントが見つかりません」と表示されます。

編集 :

次のノードを構成ファイルに追加しました...

    <services>
      <service name="chocolate">
        <endpoint address="bob/chocolate" binding="basicHttpBinding" name="chocolate" contract="RESTapi.IRESTchocolate" />
      </service>
      <service name="vanilla">
        <endpoint address="bob/vanilla" binding="basicHttpBinding" name="vanilla" contract="RESTapi.IRESTvanilla" />
      </service>
    </services>

しかし、私は同じ動作をします。問題はまだここにあります

編集:そして、ここに要求された完全な構成ファイルがあります(上記のノードなし):

    <?xml version="1.0"?>
    <configuration>
      <system.web>
        <compilation debug="true" targetFramework="4.0" />
        <authentication mode="None"></authentication>
      </system.web>
      <system.serviceModel>
        <serviceHostingEnvironment aspNetCompatibilityEnabled="true">
        </serviceHostingEnvironment>
         <standardEndpoints>
          <webHttpEndpoint>
            <standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true"></standardEndpoint>
          </webHttpEndpoint>
        </standardEndpoints>
      </system.serviceModel>
      <system.webServer>
        <modules runAllManagedModulesForAllRequests="true"/>
      </system.webServer>

    </configuration>
4

1 に答える 1

1

WCF REST Service Template 40をインストールして、ブートストラップを確認することを強くお勧めします。

Web.config

<standardEndpoints>
  <webHttpEndpoint>
    <!-- 
        Configure the WCF REST service base address via the global.asax.cs file and the default endpoint 
        via the attributes on the <standardEndpoint> element below
    -->
    <standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true"/>
  </webHttpEndpoint>
</standardEndpoints>

Global.asax

// Edit the base address of Service1 by replacing the "Service1" string below
RouteTable.Routes.Add(new ServiceRoute("Service1", new WebServiceHostFactory(), typeof(Service1)));
于 2012-08-14T15:00:46.150 に答える