Вызов ссылки на службу приводит к ошибке «Удаленный сервер возвратил ошибку: (400) неверный запрос» - PullRequest
4 голосов
/ 28 марта 2011

edit3: я добавил webconfig с сервера

edit2: я запустил журнал, и это сообщение об ошибке, которое появляется:

Превышен максимальный размер квоты для входящих сообщений (65536). Чтобы увеличить квоту, используйте свойство MaxReceivedMessageSize соответствующего элемента привязки.

Так как он делает это только для теста 2000 записей, но не для теста 200, я решил изменить настройки приложения, предполагая, что оно превысило стандартный предел 65535. К сожалению, это не помогло, и при поиске я обнаружил, что там, где есть два других типа источника для этой проблемы: настройки в самой службе и одна в конечной точке.

Разработчик, создающий сервис, говорит, что с ним все в порядке, и проблема в том, что это просто установка на моей стороне, которую он однажды сделал сам, но не может вспомнить.

Я добавил данные конфигурации приложения с конечной точкой. Люди сказали, что если конечная точка не совпадает, будет создана конечная точка по умолчанию с использованием настроек по умолчанию и, таким образом, с использованием ограничения в 65 КБ. если это проблема, как мне решить эту проблему?

Если вам нужен дополнительный код или информация, дайте мне знать.

edit: я добавил изменения в конфигурацию приложения в соответствии с предложением

<behaviors>
  <endpointBehaviors>
    <behavior name="MetadataBehavior">
      <dataContractSerializer maxItemsInObjectGraph="2147483647"/>
    </behavior>
  </endpointBehaviors>
</behaviors>


    <binding name="BasicHttpBinding_IMailSortService" closeTimeout="00:01:00"
                openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
                maxBufferSize="2147483647" maxBufferPoolSize="524288" maxReceivedMessageSize="2147483647"
                messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
                useDefaultWebProxy="true">
      <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/>
      <security mode="None">
        <transport clientCredentialType="None" proxyCredentialType="None"
            realm="" />
        <message clientCredentialType="UserName" algorithmSuite="Default" />
      </security>
    </binding>


    <endpoint behaviorConfiguration="MetadataBehavior" address="http://remote-access/MailSort/MailSortService.svc"
        binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IMailSortService"
        contract="MailSortServiceReference.IMailSortService" name="BasicHttpBinding_IMailSortService" />

webconfig на сервере

<?xml version="1.0"?>
<configuration>
  <appSettings>
    <add key="FilePath" value="\\162.27.51.43\DOWNLOAD\RPA\Mailsort\Auto" />
  </appSettings>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
    <httpRuntime maxRequestLength="2147483647" />
  </system.web>

   <system.diagnostics>
      <sources>
            <source name="System.ServiceModel" 
                    switchValue="Information, ActivityTracing"
                    propagateActivity="true">
            <listeners>
               <add name="traceListener" 
                   type="System.Diagnostics.XmlWriterTraceListener" 
                   initializeData= "c:\logs\Traces.svclog" />
            </listeners>
         </source>
      </sources>
   </system.diagnostics>
  <system.serviceModel>
    <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="true"/>
          <dataContractSerializer maxItemsInObjectGraph="2147483647"/> 
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
 <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>  
</configuration>

Ответы [ 3 ]

1 голос
/ 28 марта 2011

Комментарии становились слишком большими, переходя к ответу:

Вы указали свою конечную точку на поведение?

<endpoint address="http:blah/MyService.svc" behaviorConfiguration="MyServiceBehavior". 

Текущая конфигурация работает на 200, но не на 2000?Если да, можете ли вы попытаться изменить привязку службы к максимальному значению, как показано ниже, и посмотреть, поможет ли это (вы также отразите те же атрибуты на стороне службы)?

<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/>
0 голосов
/ 05 мая 2011

решение было в настройках приложения ниже.

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

Включить в раздел.

<protocolMapping>
<remove scheme="http" />
<add scheme="http" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IMailSortService" />
</protocolMapping>
0 голосов
/ 15 апреля 2011

Я не вижу комментариев для этого поста.

Вместо комментирования я даю ответ.

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

http://forums.silverlight.net/forums/p/191589/442378.aspx

<endpoint behaviorConfiguration="MetadataBehavior" address="http://remote-access/MailSort/MailSortService.svc"
        binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IMailSortService"
        contract="FullyQualifiedNamespace.IMailSortService" name="BasicHttpBinding_IMailSortService" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...