Проблема службы WCF только в производственном процессе при возврате больших объектов - PullRequest
1 голос
/ 21 февраля 2011

Во-первых, вот мой контракт на обслуживание:

[ServiceContract]
public interface IUpdateService
{
    [OperationContract]
    IEnumerable<SoftwareUpdate> GetUpdates(string version);

    [OperationContract]
    bool AreUpdatesAvailable(string version);
}

А вот SoftwareUpdate:

[DataContract]
public class SoftwareUpdate
{
    [DataMember]
    public Version Version { get; set; }

    [DataMember]
    public byte[] UpdateArchive { get; set; }
}

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

Ответы [ 3 ]

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

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

Я бы порекомендовал изучить потоковую передачу вашего сериализованного ответа от службы WCF, что позволит вам отправлять и получать неограниченное количество данных в течение более длительного срока.Этот процесс описан в этой ссылке MSDN: http://msdn.microsoft.com/en-us/library/ms733742.aspx

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

~ VulgarBinary

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

Попробуйте скинуть это в web.config

<serviceBehaviors>
        <behavior name="">
          <serviceMetadata httpGetEnabled="true" />
            <dataContractSerializer maxItemsInObjectGraph="900000"/>
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
</serviceBehaviors>
0 голосов
/ 21 февраля 2011

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

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