Практическое руководство. Конфигурация служб ASP.NET в ASP.NET AJAX

Visual Studio 2010

Обновлен: Ноябрь 2007

Этот пункт описывает как установить конфигурацию, разрешающую приложениям клиента, позволяющего ASP.NET AJAX, вызывать веб-службы ASP.NET (файлы .asmx). В данном разделе описываются следующие задачи:

  • Конфигурирование веб-служб, позволяющее вызовы из клиентского сценария.

  • Конфигурирование сериализации JSON.

  • Конфигурирование службы проверки подлинности.

  • Настройка службы ролей.

  • Настройка службы профилей.

Параметры конфигурации все сделаны в группе конфигурации system.web.extension. Дополнительные сведения см. в разделе Элемент system.web.extensions (схема параметров ASP.NET).

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

Для вызовов веб-службы, которая не введена из разрешающих AJAX клиентов ASP.NET, класс обработчика ScriptHandlerFactory делегирует вызов обработчику по умолчанию, который использует формат SOAP вместо JSON. Это выполняется внутренне и нет необходимости предпринимать какие-либо действия. Можно также отключать протокол SOAP для веб-сервисов.

Чтобы отключить протокол SOAP для веб-сервисов

  • В файле Web.config веб-узла, очистите все протоколы для веб-сервисов, как показано в следующем примере:

    <system.web>
      <webServices>
        <protocols>
          <clear/>
        </protocols>
      </webServices>
    </system.web>
    

Чтобы настроить веб-службы для разрешения вызовов из клиентского сценария

  • В файле Web.config веб-узла, зарегистрируйте обработчик http-данных ScriptHandlerFactory.

    Этот обработчик выполняет обработку вызовов веб-служб, сделанных из сценария.

    Bb763183.alert_note(ru-ru,VS.100).gifПримечание.

    Эти параметры конфигурации являются частью шаблона файла Web.config для любых новых веб-узлов с поддержкой AJAX, которые Вы создадите в Microsoft Visual Studio 2005. 

    В следующем примере показан элемент Web.config для регистрации обработчика.

    <system.web>
      <httpHandlers>
        <remove verb="*" path="*.asmx"/>
        <add verb="*" path="*.asmx"
          type="System.Web.Script.Services.ScriptHandlerFactory"
           validate="false"/>
      </httpHandlers>
    <system.web>
    

Если клиентский сценарий вызывает веб-службы ASP.NET, дата переходит в формат JSON. Можно настроить сериализацию JSON с помощью элемента jsonSerialization.

Чтобы настроить сериализацию JSON.

  1. Откройте файл «Web.config» для веб-узла.

    Bb763183.alert_note(ru-ru,VS.100).gifПримечание.

    Если Вы создаете веб-сервис в Microsoft Visual Studio 2005, файл Web.config содержит раздел system.web.extensions с закомментированными дочерними элементами.

  2. В элементе webServices добавьте элемент jsonSerialization.

    Этот элемент позволяет задавать пользовательские преобразователи и переопределять параметры по умолчанию.

  3. Определяет следующие атрибуты сериализации. Все атрибуты являются необязательными.

    • recursionLimit. Задает максимальную глубину сериализации типов. Предел рекурсии по умолчанию равен 100.

    • maxJsonLength. Указывает максимальную длину строки JSON (максимальное число знаков UTF-8). Длина по умолчанию составляет 102400.

    В следующем примере показано, как настроить элемент jsonSerialization. В этом примере maxJsonLength установлен равным 5000.

    <configuration>
      <system.web.extensions>
        <scripting>
          <webServices>
            <jsonSerialization maxJsonLength="5000"/>
          </webServices>
        </scripting>
      </system.web.extensions>
    </configuration>
    
  4. Если Вы хотите использовать пользовательский преобразователь в элемент jsonSerialization, добавьте элемент converters.

    Элемент содержит следующие атрибуты:

    • nameУникальный идентификатор.

    • typeПолное имя типа преобразователя.

    В следующем примере показано, как настроить пользовательский преобразователь.

    <configuration>
      <system.web.extensions>
        <scripting>
          <webServices>
            <jsonSerialization maxJsonLength="50"/>
              <converters>
                <add name="MyCustomConverter" 
                  type="MyCompany.ConvertersNameSpace.MyTypeConverter"/>
              </converters>
            </jsonSerialization>
          </webServices>
        </scripting>
      </system.web.extensions>
    </configuration>
    

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

Дополнительные сведения об отладке приложений веб-служб ASP.NET, см. в следующих разделах:

Чтобы настроить службу проверки подлинности

  1. Откройте файл «Web.config» для веб-узла.

  2. В элементе authentication разрешите формы проверки подлинности.

    Следующий пример показывает элемент authentication, настроенный для использования проверки подлинности в формах. Любые попытки неавторизованного пользователя получить доступ к защищенным ресурсам будут перенаправляться на страницу Login.aspx в корень веб-узла.

    <system.web>
      <authentication mode="Forms">
        <forms cookieless="UseCookies" 
          loginUrl="~/login.aspx"/>
      </authentication>
    <system.web>
    

    Дополнительные сведения см. в разделе Использование проверки подлинности с помощью форм в ASP.NET AJAX.

  3. В элементе system.web.extensions разрешите службу проверки подлинности.

    В следующем примере показано, как включить службу проверки подлинности.

    <system.web.extensions>
      <scripting>
        <webServices>
           <authenticationService enabled="true" />
        </webServices>
      </scripting>
    </system.web.extensions>
    

Настройка службы ролей

  1. Откройте файл «Web.config» для веб-узла.

  2. В элементе system.web.extensions разрешите службу ролей.

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

    <system.web.extensions>
      <scripting>
        <webServices>
          <rolesService enabled="true" />
        </webServices>
      </scripting>
    </system.web.extensions>
    

Настройка службы профилей.

  1. Откройте файл «Web.config» для веб-узла.

  2. Если они еще не определены, определите свойства профиля, которые Вы хотите получить в приложении.

    Были определены свойства профиля в разделе profile при помощи использования такого синтаксиса, как, например, в следующем примере. Для сгруппированных свойств используйте элемент group.

    <system.web>
      <profile enabled="true">
        <add name=" Backgroundcolor" type="System.String"
           defaultValue="white" />
        <add name=" Foregroundcolor" type="System.String"
         defaultValue="black" />
        <properties>
          <group name="Address">
           <add name="Street" type="System.String" />
           <add name="City" type="System.String"/>
           <add name="PostalCode" type="System.String" />
          </group>
        </properties>
      </profile>
    </system.web>
    

    Дополнительные сведения см. в разделе Общие сведения о свойствах профилей ASP.NET.

  3. В элементе system.web.extensions включите службу профилей.

    В следующем примере показано, как включить службу профилей.

    <system.web.extensions>
      <scripting>
        <webServices>
          < profileService enabled="true" />
        </webServices>
      </scripting>
    </system.web.extensions>
    
  4. Чтобы сделать свойство профиля доступным в клиентском приложения, добавьте имя свойства в атрибут readAccessProperties элемента profileService.

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

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

    <profileService enabled="true" 
        readAccessProperties="Backgroundcolor,Foregroundcolor" 
        writeAccessProperties=" Backgroundcolor,Foregroundcolor"/>
    
Показ: