Не удалось установить jsonSerialization в Azure.

Приложение, которое я пытаюсь разместить в Azure, было создано в ASP.NET 3.5, и я преобразовал его в 4.0 при перемещении в облако. Все отлично работает, пока я не пытаюсь добавить этот блок в свой web.config:

<system.web.extensions>
  <scripting>
   <webServices>
    <jsonSerialization maxJsonLength="10000000"></jsonSerialization>
   </webServices>
  </scripting>
 </system.web.extensions>

Эта строка приводит к тому, что веб-роль навсегда остается в состоянии «Занят».

Вот весь web.config:

<?xml version="1.0"?>
<!--
 For more information on how to configure your ASP.NET application, please visit
 http://go.microsoft.com/fwlink/?LinkId=169433
 -->
<configuration>
 <appSettings>
  ...
 </appSettings>
 <system.diagnostics>
  <trace>
   <listeners>
    <add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" name="AzureDiagnostics">
     <filter type="" />
    </add>
   </listeners>
  </trace>
 </system.diagnostics>
 <connectionStrings>
  ...
 </connectionStrings>
 <system.web>
  <customErrors mode="Off"/>
  <compilation targetFramework="4.0">
   <assemblies>
    <add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
   </assemblies>
  </compilation>
  <httpHandlers>
   <add path="Telerik.Web.UI.WebResource.axd" verb="*" type="Telerik.Web.UI.WebResource" validate="false" />
  </httpHandlers>
 </system.web>
 <system.webServer>
  <modules runAllManagedModulesForAllRequests="true" />
  <validation validateIntegratedModeConfiguration="false" />
  <handlers>
   <add name="Telerik_Web_UI_WebResource_axd" verb="*" preCondition="integratedMode" path="Telerik.Web.UI.WebResource.axd" type="Telerik.Web.UI.WebResource" />
  </handlers>
 </system.webServer>
 <system.web.extensions>
  <scripting>
   <webServices>
    <jsonSerialization maxJsonLength="10000000"></jsonSerialization>
   </webServices>
  </scripting>
 </system.web.extensions>
</configuration>

Любые предложения были бы замечательными! Опять же, удаляем раздел system.web.extensions, и все работает нормально (кроме кода, которому нужен переопределенный maxJsonLength).

Я также пытался выполнить локальное развертывание System.Web.Extensions. Туда тоже нельзя.

Спасибо!


person 1kevgriff    schedule 13.08.2010    source источник
comment
Работает ли он в среде разработки?   -  person knightpfhor    schedule 14.08.2010


Ответы (2)


Я была такая же проблема. Обходной путь от Yi-Lin Luo в эта тема сделала это за меня. Это должно быть добавлено в configSections; в противном случае jsonSerialization не будет распознаваться в среде Azure.

   <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
        <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
          <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="Everywhere"/>
        </sectionGroup>
      </sectionGroup>
   </sectionGroup>
person Alex R.    schedule 17.06.2011

Это действительно работает, если эта строка опущена? Похоже на это: http://social.msdn.microsoft.com/Forums/en/windowsazure/thread/6c739db9-4f6a-4203-bbec-eba70733ec16

person maartenba    schedule 23.08.2010