简体   繁体   English

如何在WCF WsHttp绑定上启用HTTPS

[英]How to Enable HTTPS on WCF WsHttp bindings

Hi i am trying to enable my wcf serive to run on https but i am getting this error 嗨,我想让我的wcf服务器在https上运行,但我收到此错误

Configuration binding extension 'system.serviceModel/bindings/true' could not be found. 找不到配置绑定扩展'system.serviceModel / bindings / true'。 Verify that this binding extension is properly registered in system.serviceModel/extensions/bindingExtensions and that it is spelled correctly. 验证此绑定扩展是否已在system.serviceModel / extensions / bindingExtensions中正确注册,并且拼写正确。

Can any one let me know where i am going wrong. 谁能让我知道我哪里出错了。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
   <system.web>
      <compilation debug="true" />
      <authentication mode="None"/>
      <httpRuntime maxRequestLength="2097151"   />
      <hostingEnvironment shadowCopyBinAssemblies="false"/>
      <pages compilationMode="Never"/>
   </system.web>      
   <!-- When deploying the service library project, the content of the config file must be added to the host's 
  app.config file. System.Configuration does not support config files for libraries. -->
   <system.serviceModel>
      <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />

      <services>
         <service name="MyWebApp.Medical.WebViewer.Wcf.StoreService" behaviorConfiguration="WebViewerServiceBehavior">
            <endpoint address="" binding="webHttpBinding" contract="MyWebApp.Medical.WebViewer.ServiceContracts.IStoreService" behaviorConfiguration="WebViewerServiceBehavior" bindingConfiguration="HandleLargeData"/>
            <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
         </service>

        <service name="MyWebApp.Medical.WebViewer.Wcf.PatientService" behaviorConfiguration="WebViewerServiceBehavior">
          <endpoint address="" binding="webHttpBinding" contract="MyWebApp.Medical.WebViewer.ServiceContracts.IPatientService" behaviorConfiguration="WebViewerServiceBehavior" bindingConfiguration="HandleLargeData"/>
          <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
        </service>

         <service name="MyWebApp.Medical.WebViewer.Wcf.ObjectQueryService" behaviorConfiguration="WebViewerServiceBehavior">
            <endpoint address="" binding="webHttpBinding" contract="MyWebApp.Medical.WebViewer.ServiceContracts.IObjectQueryService" behaviorConfiguration="WebViewerServiceBehavior">
            </endpoint>         
            <endpoint address="mex" binding="mexHttpsBinding" bindingConfiguration="" contract="IMetadataExchange">         
            </endpoint>
         </service>
         <service name="MyWebApp.Medical.WebViewer.Wcf.ObjectRetrieveService" behaviorConfiguration="WebViewerServiceBehavior">
            <endpoint address="" binding="webHttpBinding" contract="MyWebApp.Medical.WebViewer.ServiceContracts.IObjectRetrieveService" behaviorConfiguration="WebViewerServiceBehavior">
            </endpoint>
         </service>
         <service name="MyWebApp.Medical.WebViewer.Wcf.PacsQueryService" behaviorConfiguration="WebViewerServiceBehavior">
            <endpoint address="" binding="webHttpBinding" contract="MyWebApp.Medical.WebViewer.ServiceContracts.IPACSQueryService" behaviorConfiguration="WebViewerServiceBehavior">
            </endpoint>
            <!-- Metadata Endpoints -->
            <!-- The Metadata Exchange endpoint is used by the service to describe itself to clients. -->
            <!-- This endpoint does not use a secure binding and should be secured or removed before deployment -->
            <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
         </service>
         <service name="MyWebApp.Medical.WebViewer.Wcf.PACSRetrieveService" behaviorConfiguration="WebViewerServiceBehavior">
            <endpoint address="" binding="webHttpBinding" contract="MyWebApp.Medical.WebViewer.ServiceContracts.IPACSRetrieveService" behaviorConfiguration="WebViewerServiceBehavior">
            </endpoint>
         </service>
         <service name="MyWebApp.Medical.WebViewer.Wcf.AuthenticationService" behaviorConfiguration="WebViewerServiceBehavior">
            <endpoint address="" binding="webHttpBinding" contract="MyWebApp.Medical.WebViewer.ServiceContracts.IAuthenticationService" behaviorConfiguration="WebViewerServiceBehavior">
            </endpoint>
            <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
         </service>
         <service name="MyWebApp.Medical.WebViewer.Wcf.PatientAccessRightsService" behaviorConfiguration="WebViewerServiceBehavior">
            <endpoint address="" binding="webHttpBinding" contract="MyWebApp.Medical.WebViewer.ServiceContracts.IPatientAccessRightsService" behaviorConfiguration="WebViewerServiceBehavior">
            </endpoint>
         </service>
         <service name="MyWebApp.Medical.WebViewer.Wcf.AnnotationsService" behaviorConfiguration="WebViewerServiceBehavior">
            <endpoint address="" binding="webHttpBinding" contract="MyWebApp.Medical.WebViewer.ServiceContracts.IAnnotationsService" behaviorConfiguration="WebViewerServiceBehavior" bindingConfiguration="HandleLargeData">
            </endpoint>
         </service>
          <service name="MyWebApp.Medical.WebViewer.Wcf.OptionsService" behaviorConfiguration="WebViewerServiceBehavior">
              <endpoint address="" binding="webHttpBinding" contract="MyWebApp.Medical.WebViewer.ServiceContracts.IOptionsService" behaviorConfiguration="WebViewerServiceBehavior">
              </endpoint>
          </service>
          <service name="MyWebApp.Medical.WebViewer.Wcf.AuditLogService" behaviorConfiguration="WebViewerServiceBehavior">
              <endpoint address="" binding="webHttpBinding" contract="MyWebApp.Medical.WebViewer.ServiceContracts.IAuditLogService" behaviorConfiguration="WebViewerServiceBehavior">
              </endpoint>
          </service>
          <service name="MyWebApp.Medical.WebViewer.Wcf.ExportService"
                  behaviorConfiguration="WebViewerServiceBehavior">
              <endpoint address=""
      binding="webHttpBinding"
      contract="MyWebApp.Medical.WebViewer.ServiceContracts.IExportService"
      behaviorConfiguration="WebViewerServiceBehavior"
      bindingConfiguration="HandleLargeData">
              </endpoint>
          </service>
          <service name="MyWebApp.Medical.WebViewer.Wcf.MonitorCalibrationService"
                  behaviorConfiguration="WebViewerServiceBehavior">
              <endpoint address=""
      binding="webHttpBinding"
      contract="MyWebApp.Medical.WebViewer.ServiceContracts.IMonitorCalibrationService"
      behaviorConfiguration="WebViewerServiceBehavior"
      bindingConfiguration="HandleLargeData">
              </endpoint>
          </service>
          <service name="MyWebApp.Medical.WebViewer.Wcf.WorklistService"
                  behaviorConfiguration="WebViewerServiceBehavior">
              <endpoint address=""
      binding="webHttpBinding"
      contract="MyWebApp.Medical.WebViewer.ServiceContracts.IWorklistService"
      behaviorConfiguration="WebViewerServiceBehavior"
      bindingConfiguration="HandleLargeData">
              </endpoint>
          </service>
      </services>
      <extensions>
        <bindingExtensions>
          <add name="basic" type="basicHttpBinding"/>
          <add name="webBind" type="webHttpBinding"/>
          <add name="ws*bind" type="wsHttpBinding"/>
        </bindingExtensions>
         <behaviorExtensions>
            <add name="jsonWebHttp" type="MyWebApp.Dicom.Services.ErrorHandler.JsonErrorWebHttpBehaviorElement, MyWebApp.Medical.WebViewer.WCF" />
            <add name="CorsSupport" type="MyWebApp.Wcf.CorsSupportBehaviorElement, MyWebApp.Wcf.WebHttpCorsBehavior" />
         </behaviorExtensions>
      </extensions>
      <bindings>
         <webHttpBinding>

            <binding name="HandleLargeData"  maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" receiveTimeout="01:00:00" openTimeout="01:00:00" closeTimeout="01:00:00" sendTimeout="01:00:00">
              <security mode="Transport">
                <transport clientCredentialType="None"/>
              </security>
               <readerQuotas maxDepth="2147483647"
                  maxStringContentLength="2147483647"
                  maxArrayLength="2147483647"
                  maxBytesPerRead="2147483647"
                  maxNameTableCharCount="2147483647" />
            </binding>
         </webHttpBinding>
      </bindings>
      <behaviors>
         <serviceBehaviors>
            <behavior name="WebViewerServiceBehavior">
               <!-- To avoid disclosing metadata information, 
          set the value below to false and remove the metadata endpoint above before deployment -->
               <!--<serviceMetadata httpGetEnabled="true" httpGetUrl="anonymous" />-->
              <serviceMetadata  httpsGetBinding="true"  httpsGetUrl="anonymous" />
               <!-- To receive exception details in faults for debugging purposes, 
          set the value below to true.  Set to false before deployment 
          to avoid disclosing exception information -->
               <serviceDebug includeExceptionDetailInFaults="True" />
            </behavior>
         </serviceBehaviors>
         <endpointBehaviors>
            <behavior name="WebViewerServiceBehavior">
               <webHttp />
               <jsonWebHttp />
               <CorsSupport />
            </behavior>
         </endpointBehaviors>
      </behaviors>
   </system.serviceModel>
   <connectionStrings>
   </connectionStrings>
   <appSettings>

   </appSettings>
    <system.webServer>
        <staticContent>
            <remove fileExtension=".dcz"/>
            <mimeMap fileExtension=".dcz" mimeType="application/x-zip-compressed" />
        </staticContent>
    </system.webServer>
</configuration>

Looks like you have set httpsGetBinding to a binding that is not defined. 看起来您已将httpsGetBinding设置为未定义的绑定。

Try changing this: 尝试改变这个:

 <serviceMetadata  httpsGetBinding="true"  httpsGetUrl="anonymous" />

to this: 对此:

 <serviceMetadata httpsGetEnabled="true" />

Also you have provided a name to the binding - 'HandleLargeData'. 您还为绑定提供了一个名称 - 'HandleLargeData'。 Only the services that have explicitly set this in the bindingConfiguration property will use it. 只有在bindingConfiguration属性中明确设置此项的服务才会使用它。 Perhaps this is what you want but just something to be aware of. 也许这就是你想要的,但只是需要注意的事情。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM