WCF сокращают проблему несоответствия

То, что Вы делаете, отображает ряд точек ввода на ряд выходных точек. Первая часть проблемы должна определить отображение для Вашего изменения размеров или вращения; вторая часть должна обработать точки, которые не лежат точно на границе пикселей.

Отображение для изменения размеры легко:

x' = x * (width' / width)
y' = y * (height' / height)

Отображение для вращения только немного более трудно.

x' = x * cos(a) + y * sin(a)
y' = y * cos(a) - x * sin(a)

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

16
задан Shaul says I Support Monica 20 January 2011 в 13:34
поделиться

3 ответа

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

Код:

ServiceReference1.Service1Client client = new WCFTest.ConsoleClient.ServiceReference1.Service1Client("NetTcpBinding_IService1");    
client.PrintMessage("Hello!");

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

<configuration>
    <system.serviceModel>
        <bindings>
            <netTcpBinding>
                <binding name="NetTcpBinding_IService1" closeTimeout="00:01:00"
                    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                    transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions"
                    hostNameComparisonMode="StrongWildcard" listenBacklog="10"
                    maxBufferPoolSize="524288" maxBufferSize="65536" maxConnections="10"
                    maxReceivedMessageSize="65536">
                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                    <reliableSession ordered="true" inactivityTimeout="00:10:00"
                        enabled="false" />
                    <security mode="Message">
                        <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
                        <message clientCredentialType="Windows" />
                    </security>
                </binding>
            </netTcpBinding>
            <wsHttpBinding>
                <binding name="WSHttpBinding_IService1" closeTimeout="00:01:00"
                    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                    bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
                    maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                    messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
                    allowCookies="false">
                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                    <reliableSession ordered="true" inactivityTimeout="00:10:00"
                        enabled="false" />
                    <security mode="Message">
                        <transport clientCredentialType="Windows" proxyCredentialType="None"
                            realm="" />
                        <message clientCredentialType="Windows" negotiateServiceCredential="true"
                            algorithmSuite="Default" establishSecurityContext="true" />
                    </security>
                </binding>
            </wsHttpBinding>
        </bindings>
        <client>
            <endpoint address="http://servername:9999/TestService1/" binding="wsHttpBinding"
                bindingConfiguration="WSHttpBinding_IService1" contract="ServiceReference1.IService1"
                name="WSHttpBinding_IService1">
                <identity>
                    <dns value="&#xD;&#xA;          " />
                </identity>
            </endpoint>
            <endpoint address="net.tcp://serverName:9990/TestService1/" binding="netTcpBinding"
                bindingConfiguration="NetTcpBinding_IService1" contract="ServiceReference1.IService1"
                name="NetTcpBinding_IService1">
                <identity>
                    <userPrincipalName value="MyUserPrincipalName " />
                </identity>
            </endpoint>
        </client>
    </system.serviceModel>
</configuration>
1
ответ дан 30 November 2019 в 16:09
поделиться

Другие возможные причины:

  • Попытка сериализовать объект без конструктора по умолчанию.
  • Попытка сериализовать какой-то другой вид не сериализуемого объекта (например, Исключение). Чтобы предотвратить сериализацию объекта, применяйте атрибут [IgnoreDataMember] к полю или свойству.
  • Проверьте поля перечисления, чтобы убедиться, что они установлены в правильное значение (или являются недействительными). В некоторых случаях может понадобиться добавить значение 0 в перечисление. (не уверен в деталях этого пункта).

Что проверить:

  • Настроить трассировку WCF на наличие, по крайней мере, критических ошибок или исключений. Будьте внимательны при просмотре файлов, если вы включите дополнительные трассировки. Во многих случаях это даст очень полезную информацию.

    Просто добавьте это в в ваш web.config ON THE SERVER. Создайте каталог log, если он не существует.

 <system.diagnostics>
     <sources>
       <source name="System.ServiceModel"
               switchValue="Error, Critical"
               propagateActivity="true">
         <listeners>
           <add name="traceListener"
               type="System.Diagnostics.XmlWriterTraceListener"
               initializeData= "c:\log\WCF_Errors.svclog" />
         </listeners>
       </source>
     </sources>
   </system.diagnostics>
  • Убедитесь, что файл .svc действительно появится в браузере без ошибок. Это даст вам некоторую помощь "первого шанса". Например, если у вас есть не сериализуемый объект, вы получите это сообщение ниже. Обратите внимание, что оно ясно говорит вам о том, что не может быть сериализовано. Убедитесь, что у вас включена конечная точка 'mex' и вызовите файл .svc в вашем браузере.

ExceptionDetail, скорее всего созданный IncludeExceptionDetailInFaults=true, чья ценность: System.InvalidOperationException: Исключение было брошено при вызове на Расширение экспорта WSDL: Система.СервисМодель.Описание.DataContractSerializerOperationBehavior контракт: http://tempuri.org/:IOrderPipelineService. ----> System.Runtime.Serialization.InvalidDataContractException: Тип Р.МВЦ Услуги.ТрубопроводыСтройплощадка". не может быть сериализован. Рассмотрим возможность маркировки. с помощью DataContractAttribute атрибут, и маркировка всех его члены, которых вы хотите сериализовать с Атрибут DataMemberAttribute.

32
ответ дан 30 November 2019 в 16:09
поделиться

Для меня это сообщение об ошибке было выдано, потому что мое поведение службы web.config по умолчанию имеет низкий предел количества сообщений, поэтому, когда возвращается WCF, скажем, 200000 байт и мой лимит составлял 64000 байт, ответ был усечен, и вы получили «... бессмысленный ответ». Это значимо, оно просто усечено и не может быть проанализировано.

Я вставлю свое изменение web.config, которое устранило проблему:

<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="YourNameSpace.DataServiceBehavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
      <dataContractSerializer maxItemsInObjectGraph="2147483647" />
      <serviceTimeouts transactionTimeout="05:05:00" />
      <serviceThrottling maxConcurrentCalls="500" maxConcurrentSessions="500"
       maxConcurrentInstances="2147483647" />
</behavior>
</serviceBehaviors>
</behaviors>

Значение maxItemsInObjectGraph является наиболее важным!
Надеюсь, это кому-нибудь поможет.

8
ответ дан 30 November 2019 в 16:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: