Ошибка сервера в '/' Ошибка приложения с сервисом REST WCF с использованием https - PullRequest
0 голосов
/ 27 апреля 2019

Я пытаюсь разместить службу WCF REST на сервере https.Диспетчер IIS на сервере настроил свойство для порта https, а мой Web.config настроен правильно.Но я просто получаю это сообщение «Ошибка сервера в» / «Ошибка приложения» при проверке URL-адреса.URL соответствует правильному виртуальному каталогу, который был настроен как приложение IIS.Это просто не решает.У меня есть другая служба WCF на этом сервере, которая работает нормально, но она использует basicHttpBinding, так как это мыльный сервис.

Может кто-нибудь взглянуть на мой RESTful web.Config и посмотреть, не просмотрел ли я что-то, так как должно бытьчто-то не так?Эта служба работает нормально при развертывании на моем локальном компьютере с использованием http без всех настроек конфигурации https, но при развертывании на другом сервере https она не работает.Там должно быть что-то, что я скучаю.Tnx.

    <?xml version="1.0"?>
    <configuration>
      <appSettings>
      </appSettings>
      <!-- SQL connection settings -->
      <connectionStrings>
      </connectionStrings>
      <!--
        For a description of web.config changes see http://go.microsoft.com/fwlink/?LinkId=235367.

        The following attributes can be set on the <httpRuntime> tag.
          <system.Web>
            <httpRuntime targetFramework="4.6" />
          </system.Web>
      -->
      <system.web>
        <compilation debug="true" targetFramework="4.6"/>
        <httpRuntime targetFramework="4.5"/>
      </system.web>
      <system.serviceModel>
        <client/>

        <bindings>
          <webHttpBinding>
            <binding name="secureHttpBinding" maxReceivedMessageSize="200000000">
              <security mode="Transport">
                <transport clientCredentialType="None"/>
              </security>
            </binding>
          </webHttpBinding>
          <mexHttpsBinding>
            <binding name="secureMexBinding"/>
          </mexHttpsBinding>
        </bindings>

        <behaviors>
          <!-- Required for json web service -->
          <endpointBehaviors>
            <behavior name="webBehavior">
              <webHttp/>
            </behavior>
          </endpointBehaviors>

          <serviceBehaviors>
            <behavior name="serviceBehaviors">
              <!-- To avoid disclosing metadata information, set the values below to false before deployment -->
              <serviceMetadata httpGetEnabled="false" httpsGetEnabled="true"/>
              <!-- 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="false"/>
            </behavior>
          </serviceBehaviors>

        </behaviors>
        <services>
          <service behaviorConfiguration="serviceBehaviors" name="RepoWebService.MasterRepoAPI">
            <endpoint address="" behaviorConfiguration="webBehavior" binding="webHttpBinding" bindingConfiguration="secureHttpBinding" contract="StatuteRepoWebService.IRepoWebService.MasterRepoAPI"/>
            <endpoint address="mex" binding="mexHttpsBinding" bindingConfiguration="secureMexBinding" contract="IMetadataExchange"/>
          </service>
        </services>
        <protocolMapping>
          <add scheme="https" binding="webHttpBinding" bindingConfiguration="secureHttpBinding"/>
        </protocolMapping>
        <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"/>
      </system.serviceModel>
      <system.webServer>
        <modules runAllManagedModulesForAllRequests="true"/>
      </system.webServer>
      <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
          <dependentAssembly>
            <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
            <bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0"/>
          </dependentAssembly>
        </assemblyBinding>
      </runtime>
    </configuration>

1 Ответ

1 голос
/ 29 апреля 2019

Нет проблем, ваш файл конфигурации службы мне кажется.Он поддерживает только протокол Https.В среде хостинга могут возникнуть некоторые проблемы.
Мы должны обеспечить привязку https в модуле привязки IIS, тогда адрес службы будет https://x.x.x.x:xxxxx/service1.svc
enter image description here
Кроме того,Вот моя упрощенная конфигурация, использующая новую функцию WCF4.5, сопоставление протоколов.он поддерживает как https, так и http.

<system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior>
          <webHttp />
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <bindings>
      <webHttpBinding>
        <binding name="mybinding">
          <security mode="Transport">
            <transport clientCredentialType="None"></transport>
          </security>
        </binding>
      </webHttpBinding>
    </bindings>
    <protocolMapping>
      <add binding="webHttpBinding" scheme="http"/>
      <add binding="webHttpBinding" scheme="https" bindingConfiguration="mybinding"/>
    </protocolMapping>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
  </system.serviceModel>

https://docs.microsoft.com/en-us/dotnet/framework/wcf/whats-new
Не стесняйтесь, дайте мне знать, если есть что-то, с чем я могу помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...