Максимум WCF передает квоту размера

Платформа.NET выставляет классы, которые обрабатывают syndation: SyndicationFeed и т.д. Так вместо того, чтобы делать рендеринг себя или пользование некоторой другой предложенной библиотекой RSS, почему бы не позволить платформе заботиться о нем?

В основном Вам просто нужен следующий пользовательский ActionResult, и Вы готовы пойти:

public class RssActionResult : ActionResult
{
    public SyndicationFeed Feed { get; set; }

    public override void ExecuteResult(ControllerContext context)
    {
        context.HttpContext.Response.ContentType = "application/rss+xml";

        Rss20FeedFormatter rssFormatter = new Rss20FeedFormatter(Feed);
        using (XmlWriter writer = XmlWriter.Create(context.HttpContext.Response.Output))
        {
            rssFormatter.WriteTo(writer);
        }
    }
}

Теперь в Вашем действии контроллера Вы можете простой возврат следующее:

return new RssActionResult() { Feed = myFeedInstance };

существует полный образец на моем блоге в http://www.developerzen.com/2009/01/11/aspnet-mvc-rss-feed-action-result/

7
задан marc_s 10 November 2009 в 15:44
поделиться

4 ответа

Ваш вопрос напомнил мне сообщение в блоге Шона Вильдермута, в котором у него возникли проблемы с большими размерами сообщений в приложении Silverlight. Возможно, это поможет вам:

http://wildermuth.com/2009/09/10/Using_Large_Message_Requests_in_Silverlight_with_WCF

Шон говорит:

Уловка состоит в том, чтобы изменить customBinding в web.config, чтобы использовать более крупные значения по умолчанию . Я выбрал 2 МБ, так как это разумный размер. Конечно, установка их на 2 ГБ, как показано выше, будет работать, но это сделает вас более уязвимыми для атак. Выберите размер, который не превышает ваш самый большой запрос, но не слишком велик. Это игра в угадайку. Чтобы установить их, вам нужно добавить их в свой web.config, чтобы поместить их на узел httpTransport:

5
ответ дан 7 December 2019 в 07:46
поделиться

I think server logs means the tracing and logging files which are created when you turn that on. Here's the MSDN link.

The properties which I run into with WCF that need to have a higher value in the applications I write are maxReceivedMessageSize, maxStringContentLength, maxArrayLength and maxBufferSize. Try to increase them and see what happens. WCF can be a pain to debug as it is fond to swallow exceptions.

1
ответ дан 7 December 2019 в 07:46
поделиться

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

 <system.diagnostics>
    <trace autoflush="true" />
    <sources>
      <source name="System.ServiceModel"

                    switchValue="Critical, Error, Warning"
              >
        <listeners>
          <add name="traceListener"
                        type="System.Diagnostics.XmlWriterTraceListener"
                        initializeData="F:\log-data\ServiceTrace.svclog"
            />
        </listeners>
      </source>
    </sources>

  </system.diagnostics>
1
ответ дан 7 December 2019 в 07:46
поделиться

Две вещи:

  • вы можете показать нам конфигурацию на стороне сервера и клиента (только соответствующие разделы - конечные точки, конфигурация привязки)

  • вы изменили значения на обеих сторонах (клиент и server) ??

Существует множество настроек размера, на которые вы можете влиять ....

0
ответ дан 7 December 2019 в 07:46
поделиться
Другие вопросы по тегам:

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