среда, 25 января 2012 г.

Первое ASP приложение

Все подготовительные работы выполнены, попробуем опубликовать первое приложение. Нам нужно проверить факт его работоспособности, поэтому публиковать будем создаваемое Visual Studio по умолчанию приложение.

     Итак, вся работа будет вестись в Microsoft Visual Studio. В моём случае это Microsoft Visual Studio 2010.
Запускаем и делаем новый проект приложения ASP: файл - создать - проект. Выбираем C# и тип проекта "Веб-приложение ASP.NET".


   Выбираем имя (я хочу сделать приложение, которое будет загружать бухгалтерские проводки из программы, работающей с DBF в SQL Server, потому назову его BnkLoadApplication) и место расположения проекта, нажимаем ОК и студия, немного подумав, выдает нам новый проект. В принципе проект работоспособен и если нажать F5 то он запустится на локальном тестовом сервере. Но нам нужно разместить его на удаленном сервере IIS.
    Прежде чем это делать нужно решить вопрос аутентификации. По умолчанию это forms. т.е. при попадании на страницу пользователю выдается форма для ввода логина и пароля. Данные о пользователях хранятся в базе данных.
    Работая в домене использовать такой тип аутентификации не имеет смысла, а имеет смысл использовать windows - аутентификацию.
    Эти настройки описываются в файле Web.config. Открываем его, смотрим и видим следующее:


<?xml version="1.0"?>

<!--
  Дополнительные сведения по настройке приложения ASP.NET см. по ссылке
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->

<configuration>
  <connectionStrings>
    <add name="ApplicationServices"
         connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true"
         providerName="System.Data.SqlClient" />
  </connectionStrings>

  <system.web>
    <compilation debug="true" targetFramework="4.0" />
    <customErrors mode="Off"/>

    <authentication mode="Forms">
     <forms loginUrl="~/Account/Login.aspx" timeout="2880" />
    </authentication>
    <membership>
      <providers>
        <clear/>
        <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices"
             enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
             maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
             applicationName="/" />
      </providers>
    </membership>
    <profile>
      <providers>
        <clear/>
        <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/>
      </providers>
    </profile>

    <roleManager enabled="false">
      <providers>
        <clear/>
        <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" />
        <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
      </providers>
    </roleManager>

  </system.web>

  <system.webServer>
     <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
</configuration>


Остановимся на нем немного подробнее. Перех нами типичный XML - файл, описывающий конфигурацию приложения. Первое что видно конфигурации, это раздел <connectionStrings>. Он описывает строки подключения к источникам данных. В данном случае к источнику данных для аутентификации. Поскольку будет использоваться windows - атентификация, то он не понадобится.

<compilation debug="true" targetFramework="4.0" /> - разрешает отладку

<customErrors mode="Off"/> - позволяет увидеть информацию об ошибке не только на локальном сервере но и на удаленной машине. Т.е. если этой строки не будет, то информация об ошибках будет видна только если зайти по адресу приложения с IIS сервера.

    <authentication mode="Forms">
     <forms loginUrl="~/Account/Login.aspx" timeout="2880" />
    </authentication>"
В этом разделе описывается тип аутентификации. Его нужно изменить. Поскольку мы собираемся использовать домен, то выглядеть он будет так:


    <authentication mode="Windows">
    </authentication>"


Разделы <membership>, <profile> нужны для форм-аутентификации и могут быть проигнорированы. Можно и удалить, если есть желание и тяга к прекрасному.

     Приложение готово, осталось его развернуть. Сначала нужно внести некоторые изменения в настройки сайта.  Выбираем свой сайт, а в нем - проверку подлинности.


     Включаем проверку подлинности windows, после чего щелкаем по этому пункту правой клавишей и выбираем пункт "Поставщики". В открывшейся форме проверяем что NTLM в списке разрешенных поставщиков стоит на первом месте. Если нет - то выделяем его и нажимая верхнюю кнопку "Переместит" (мягкий знак у  русификаторов не влез, что ли) ставим на первую позицию.


Нажимаем ОК. Можно разворачивать приложение.

    Проще всего это сделать с использованием публикации через файловую систему. На сервере расшариваем ранее созданную папку приложения, В Visual Studio заходим в меню "Постороение" и выбираем пункт "Опубликовать...". Откроется форма "Публикация веб-сайта".


Способ публикации выбираем "Файловая система", целевое расположение - путь к папке приложения на сервере. Жмем "Опубликовать", и если при расшаривании мы дали доступ не только на чтение но и на запись, проект зальется на сервер. 
    Осталось проверить результаты. Запускаем Internet Explorer (чтобы не поиметь проблем с доменными правами), вводим адрес вашего сайта в формате http://имя_сервера:порт_сайта/ и наслаждаемся появившейся на экране страницей тестового приложения.

Похожие посты:

Комментариев нет:

Отправить комментарий