WCF работает от внутреннего сетевого адреса, но возвращает ошибку при внешнем

Я схожу с ума здесь — я на мой 6-й день пытается неприятности стрелять это, и я теряю свой разум.

В основном внутренне, сервис работает на 100%, как и ожидалось. Я создаю» потреблять » клиент на моей внешней линии тестирования и я иду, чтобы проверить его, и он возвращается с

"The content type text/html; charset=UTF-8 of the response message does not match the content type of the binding (multipart/related; type="application/xop+xml"). If using a custom encoder, be sure that the IsContentTypeSupported method is implemented properly. The first 1024 bytes of the response were: '<HTML>
<HEAD>
<link rel="alternate" type="text/xml" href="http://myexternaladdress.com/FileUploadService.svc?disco"/>
<STYLE type="text/css">
#content{ FONT-SIZE: 0.7em; PADDING-BOTTOM: 2em; MARGIN-LEFT: 30px}BODY{MARGIN-TOP: 0px; MARGIN-LEFT: 0px; COLOR: #000000; FONT-FAMILY: Verdana; BACKGROUND-COLOR: white}P{MARGIN-TOP: 0px; MARGIN-BOTTOM: 12px; COLOR: #000000; FONT-FAMILY: Verdana}PRE{BORDER-RIGHT: #f0f0e0 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #f0f0e0 1px solid; MARGIN-TOP: -5px; PADDING-LEFT: 5px; FONT-SIZE: 1.2em; PADDING-BOTTOM: 5px; BORDER-LEFT: #f0f0e0 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: #f0f0e0 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e5e5cc}.heading1{MARGIN-TOP: 0px; PADDING-LEFT: 15px; FONT-WEIGHT: normal; FONT-SIZE: 26px; MARGIN-BOTTOM: 0px; PADDING-BOTTOM: 3px; MARGIN-LEFT: -30px; WIDTH: 100%; COLOR: #ffffff; PADDING-TOP: 10px; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #003366}.intro{MARGIN-LEFT: -15px}</STYLE>
<TITLE>
FileUploadService Service</TITLE>
</HEAD>
<BODY>
<DIV id="co'."}

В основном это все, что у меня есть, у него есть проблема с дискотекой http://myexternaladdress.com/FileUploadService.svc?disco

Вот моя служба .конфиг

<?xml version="1.0"?>
<configuration>
  <system.diagnostics>
    <trace autoflush="true" />
    <sources>
      <source name="System.ServiceModel"
            switchValue="Information, ActivityTracing"
              >
        <listeners>
          <add name="xml"/>
        </listeners>
      </source>
      <source name="System.ServiceModel.MessageLogging">
        <listeners>
          <add name="xml"/>
        </listeners>
      </source>
    </sources>
    <sharedListeners>
      <add name="xml"
           type="System.Diagnostics.XmlWriterTraceListener"
  initializeData="C:tempWCFDiagnosticsExample.svclog" />
    </sharedListeners>
  </system.diagnostics>
  <appSettings>
    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
    <add key="uploadDirectory" value="C:tempupload" />
  </appSettings>
  <system.web>
    <compilation targetFramework="4.5" />
    <httpRuntime targetFramework="4.5"/>
  </system.web>
  <system.serviceModel>
    <diagnostics>
      <messageLogging
            logEntireMessage="true"
            logMalformedMessages="true"
            logMessagesAtServiceLevel="true"
            logMessagesAtTransportLevel="true"
            maxMessagesToLog="3000"
       />
    </diagnostics>
    <extensions>
      <behaviorExtensions>
        <add name="applyAddressFilterModeBehavior"
             type="Test.Behaviors.ApplyAddressFilterModeBehaviorElement, Test.Behaviors, 
                 Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
      </behaviorExtensions>
    </extensions>
    <services>
      <service behaviorConfiguration="myBehavior" name="myWCF.FileUploadService">
        <endpoint address="" binding="wsHttpBinding" contract="myWCF.IFileUploadService" bindingConfiguration="myBinding"></endpoint>
      </service>
    </services>
    <bindings>
      <wsHttpBinding>
        <binding name="myBinding" messageEncoding="Mtom" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647">
          <security mode="None"/>
        </binding>
      </wsHttpBinding>

      <basicHttpBinding>
        <binding name="FileUploadServiceBinding" transferMode="Streamed" messageEncoding="Mtom" maxReceivedMessageSize="99108864" maxBufferSize="65536" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00">
          <security mode="None">
            <transport clientCredentialType="None" />
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>
    <behaviors>
      <serviceBehaviors>
        <behavior name="myBehavior">
          <serviceMetadata httpGetEnabled="True"/>
          <serviceDebug includeExceptionDetailInFaults="False" />
          <applyAddressFilterModeBehavior/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <protocolMapping>
      <add binding="basicHttpsBinding" scheme="https" />
    </protocolMapping>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" minFreeMemoryPercentageToActivateService="0" />
  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
    <!--
        To browse web app root directory during debugging, set the value below to true.
        Set to false before deployment to avoid disclosing web app folder information.
      -->
    <directoryBrowse enabled="true"/>
    <security>
      <requestFiltering>
        <requestLimits maxAllowedContentLength="204800000"></requestLimits>
      </requestFiltering>
    </security>
  </system.webServer>
</configuration>

Единственная разница заключается в том, что когда я прихожу извне, я добавляю сервис через мой внешний адрес, который приходит через балансировщик нагрузки и перенаправляет на https, а затем отправляет трафик на определенный сервер и порт. И я могу даже .Openмой сервис прекрасно. Моя ошибка возникает при вызове метода. Может ли кто-то сказать мне, как получить полное сообщение не только 1024 символа или указать, что я делаю неправильно?

Я попытался добавить enabledhttps и httpsuri, и это не решило проблему.

Спасибо! Я многим обязан тому, кто когда-либо помогал мне решить эту проблему.

Метки

1 ответ

  1. Привязка вашего сервиса, похоже, использует привязку wsHttpBinding. Какова цель привязки FileUploadServiceBinding ? Кажется, что он не использует.

    Служба WCF, вероятно, получает исключение. Сведения об ошибке можно получить, если добавить эти строки в web.конфигурационный файл узла службы.

    <system.diagnostics>
    <sources>
      <source name="System.ServiceModel" switchValue="Critical, Error" propagateActivity="true">
        <listeners>
          <add type="System.Diagnostics.DefaultTraceListener" name="Default">
            <filter type="" />
          </add>
          <add name="ServiceModelTraceListener">
            <filter type="" />
          </add>
        </listeners>
      </source>
    </sources>
    <sharedListeners>
      <add initializeData="c:\error.svclog" type="System.Diagnostics.XmlWriterTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" name="ServiceModelTraceListener" traceOutputOptions="Timestamp">
        <filter type="" />
      </add>
    </sharedListeners>
    

    После добавления этих строк в веб.config, выполните клиентское приложение еще раз. Если возникает исключение, сведения об исключении записываются с ошибкой.svclog. Для проверки сведений об ошибке можно использовать svclog util платформы .Net Framework.