2

私は素晴らしいWCF REST-ful JSONサービスをそのままうまく機能させています。HTTPSで動作させようとすると問題が発生します。Web.config は次のとおりです。

 <system.serviceModel>
    <bindings>
      <webHttpBinding>
        <binding name="StreamedRequestWebBinding" bypassProxyOnLocal="true" useDefaultWebProxy="false" hostNameComparisonMode="WeakWildcard" sendTimeout="10:15:00" openTimeout="10:15:00" receiveTimeout="10:15:00" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" maxBufferPoolSize="2147483647" transferMode="StreamedRequest">
          <security mode="Transport">
            <transport clientCredentialType = "None"  />
          </security>
          <readerQuotas maxArrayLength="2147483647" maxStringContentLength="2147483647" />
        </binding>
      </webHttpBinding>
    </bindings>
    <services>
      <service name="WcfRESTFullJSON.Service1" behaviorConfiguration="ServiceBehaviour">
        <endpoint address="" binding="webHttpBinding" bindingConfiguration="StreamedRequestWebBinding" contract="WcfRESTFullJSON.IService1" />
        <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="ServiceBehaviour">
          <serviceMetadata httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="web">
          <!--Him-->
          <webHttp automaticFormatSelectionEnabled="true" />
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true" />
  </system.serviceModel>

IIS で自家製の証明書を構成しました。私が持っているクライアントで:

WebClient WC;
...
WC.UploadData(URL, "POST", asciiBytes);

得られるもの:

The remote server returned an error: (500) Internal Server Error.

何が問題なのですか?

4

3 に答える 3

1

問題は解決しました。次の行のエンドポイント動作への参照が欠落していました ...endpoint behaviorConfiguration="web" address="" binding="webHttpBinding" bindingConfiguration="StreamedRequestWebBinding" contract="WcfRESTFullJSON.IService1"... in the Web.以下の構成。助けてくれた友達に感謝します!解決策は、 WCF サービスを使用して REST の 5 つの重要な原則を実装するという記事で最終的に見つかりました。

    <services>
  <service name="WcfRESTFullJSON.Service1" behaviorConfiguration="ServiceBehaviour">
    <endpoint  behaviorConfiguration="web" address="" binding="webHttpBinding" bindingConfiguration="StreamedRequestWebBinding" contract="WcfRESTFullJSON.IService1" />
    <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
  </service>
</services>
<behaviors>
  <serviceBehaviors>
    <behavior name="ServiceBehaviour">
      <serviceMetadata httpsGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>
  </serviceBehaviors>
  <endpointBehaviors>
    <behavior name="web">
      <!--Him-->
      <webHttp automaticFormatSelectionEnabled="true" />
    </behavior>
  </endpointBehaviors>
于 2012-12-13T18:48:17.547 に答える
0

SSL は HTTP の下のプロトコルであるため、通常、web.config で構成する必要のあるものは何もありません (新しいバインディングのみ)。SSL を使用する場合に変更されるもう 1 つの点は、ポートです... ファイアウォールを更新するか、要求が正しいポートに送信されていることを確認する必要がある場合があります。

于 2012-12-12T21:01:02.407 に答える