WCF - удаленный сервер возвратил неожиданный ответ: (400) неверный запрос - PullRequest
0 голосов
/ 15 февраля 2011

Я получаю эту ошибку при передаче байта [] в WCF.Может кто-нибудь PLZ решить эту ошибку ??

Конфигурация в службе (web.config)

<configuration>
    <system.web>
        <compilation debug="true" targetFramework="4.0"/>
    </system.web>
    <system.serviceModel>
        <bindings>
   <basicHttpBinding>
    <binding name="NewBinding0" maxBufferSize="2097151" maxBufferPoolSize="2097151"
     maxReceivedMessageSize="2097151" messageEncoding="Mtom"
     transferMode="Streamed">
     <readerQuotas maxDepth="2097151" maxStringContentLength="2097151"
      maxArrayLength="2097151" maxBytesPerRead="2097151" maxNameTableCharCount="2097151" />
    </binding>
   </basicHttpBinding>
   <mexHttpBinding>
    <binding name="higherMessageSize_MEX" />
   </mexHttpBinding>
  </bindings>
  <client>
   <endpoint binding="basicHttpBinding" bindingConfiguration="NewBinding0"
    contract="LService.IService">
    <identity>
     <dns value="localhost" />
    </identity>
   </endpoint>
   <endpoint address="mex" binding="mexHttpBinding" bindingConfiguration="higherMessageSize_MEX"
    contract="IMetadataExchange" />
  </client>
  <behaviors>
            <serviceBehaviors>
                <behavior>
                    <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
                    <serviceMetadata httpGetEnabled="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>
        <serviceHostingEnvironment multipleSiteBindingsEnabled="true"/>
    </system.serviceModel>
    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true"/>
    </system.webServer>
</configuration>

Конфигурация в приложении WPF (app.config)

<configuration>
    <system.serviceModel>
        <bindings>
            <basicHttpBinding>
                <binding name="BasicHttpBinding_IService" closeTimeout="00:01:00"
                    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                    allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
                    maxBufferSize="2097151" maxBufferPoolSize="2097151" maxReceivedMessageSize="2097151"
                    messageEncoding="Mtom" textEncoding="utf-8" transferMode="Streamed"
                    useDefaultWebProxy="true">
                    <readerQuotas maxDepth="2097151" maxStringContentLength="2097151"
                        maxArrayLength="2097151" maxBytesPerRead="2097151" maxNameTableCharCount="2097151" />
                    <security mode="None">
                        <transport clientCredentialType="None" proxyCredentialType="None"
                            realm="" />
                        <message clientCredentialType="UserName" algorithmSuite="Default" />
                    </security>
                </binding>
            </basicHttpBinding>
        </bindings>
        <client>
            <endpoint address="http://localhost:5980/LService/Service.svc"
                binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService"
                contract="LService.IService" name="BasicHttpBinding_IService" />
        </client>
    </system.serviceModel>
</configuration>

1 Ответ

2 голосов
/ 15 февраля 2011

Не зная вашего контракта на обслуживание и всех необходимых деталей, я могу только строить догадки.

Меня поражает то, что ваш серверный конфиг не содержит никакой конфигурации для <service>.

Правило таково:

  • на стороне сервера , вам необходим тег <services> в вашей конфигурации, который содержит любое число <service>теги, которые определяют каждый сервис на этом сервере.Каждый тег <service> может содержать любое количество тегов <endpoint> для определения одной или нескольких конечных точек службы

  • на клиенте , у вас есть один или несколько<client> записей, каждая из которых содержит один <endpoint>, который определяет, к какому адресу службы подключается ваш клиент

Таким образом, ваша конфигурация на стороне сервера должна выглядеть примерно так:1029 *

Ваша конфигурация на стороне клиента выглядит нормально - за исключением того, что вы, конечно, должны указать адрес вашего сервера, на котором работает служба, в атрибут address= - обычно это не localhost

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