1

protobuf-net .dll ライブラリを含む基本的な WCF サービス プロジェクト。

Web ブラウザーを開き、localhost/wcf/service1.svc に移動します。すべて問題ありません。

localhost/wcf/service1.svc/help に移動すると、ブラウザ コンソールに 400 Bad Request が表示されます (firebug など)。

これがweb.configです

<bindings>
  <basicHttpBinding>
    <binding name="BasicHttpBinding1" messageEncoding="Mtom">
      <security mode="None"></security>
    </binding>
  </basicHttpBinding>
</bindings>

<behaviors>
  <serviceBehaviors>
    <behavior name="Service1Behavior">
      <serviceMetadata httpGetEnabled="true"/>
      <serviceDebug includeExceptionDetailInFaults="true"/>
    </behavior>
  </serviceBehaviors>

  <endpointBehaviors>
    <behavior name="protoEndpointBehavior">
      <protobuf />
    </behavior>
  </endpointBehaviors>
</behaviors>

<extensions>
  <behaviorExtensions>
    <add name="protobuf" type="ProtoBuf.ServiceModel.ProtoBehaviorExtension, protobuf-net"/>
  </behaviorExtensions>
</extensions>

<serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true" />

<services>
  <service name="WcfService1.Service1" behaviorConfiguration="Service1Behavior">
    <endpoint address="" contract="WcfService1.IService1" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding1" behaviorConfiguration="protoEndpointBehavior" />
  </service>
</services>

4

1 に答える 1

1

ヘルプページを表示するには、これが必要です。

<bindings>
  <webHttpBinding>
    <binding name="WebHttpBinding1" >
      <security mode="None"></security>
    </binding>
  </webHttpBinding>
<bindings>

<behaviors>
  <endpointBehaviors>
    <behavior name="protoEndpointBehavior">
      <webHttp helpEnabled="true"/>
      <protobuf />
    </behavior>
  </endpointBehaviors>
</behaviors>

<services>
  <service name="WcfService1.Service1" behaviorConfiguration="Service1Behavior">
    <endpoint address="" contract="WcfService1.IService1" binding="webHttpBinding" bindingConfiguration="WebHttpBinding1" behaviorConfiguration="protoEndpointBehavior" />
  </service>
</services>

また、Markが言ったように、basicHttpBindingはMtomをエンコードするメッセージを許可し、効率を高めます。しかし、webHttpBindingはそれを許可していません。

于 2012-06-01T11:21:49.770 に答える