Подробное объяснение Web.config + оптимизация asp.net
Автор:Eve Cole
Время обновления:2009-07-01 16:44:14
1. Понимание файла Web.config
Файл Web.config представляет собой текстовый файл XML, который используется для хранения информации о конфигурации веб-приложения asp.NET (например, наиболее часто используемого метода аутентификации для настройки веб-приложения asp.NET). Он может присутствовать в каждом из них. шаг приложения в каталоге. Когда вы создаете новое веб-приложение через .NET, в корневом каталоге по умолчанию автоматически создается файл Web.config, включая параметры конфигурации по умолчанию, и все подкаталоги наследуют его параметры конфигурации. Если вы хотите изменить параметры конфигурации подкаталога, вы можете создать в нем новый файл Web.config. Он может предоставлять информацию о конфигурации в дополнение к информации о конфигурации, унаследованной от родительского каталога, а также может переопределять или изменять настройки, определенные в родительском каталоге.
(1).Web.Config хранится в спецификации XML-файла, а файл конфигурации разделен на следующие форматы.
1. Характеристики объявления обработчика раздела конфигурации: расположены в верхней части файла конфигурации и содержатся в теге <configSections>.
2. Особые функции настройки приложения: расположены в <appSetting>. Вы можете определить такую информацию, как глобальные константы для приложения.
3. Возможности настройки раздела конфигурации: он расположен в разделе <system.Web> и управляет поведением среды выполнения asp.net.
4. Особенности групп разделов конфигурации. Используя тег <sectionGroup>, вы можете настроить группировку и разместить ее внутри <configSections> или внутри других тегов <sectionGroup>.
(2). Каждый раздел раздела конфигурации.
1.Корневой элемент раздела <configuration>, остальные разделы находятся внутри него.
2. Раздел <appSetting> Этот раздел используется для определения настроек приложения. Для некоторых неопределенных настроек пользователи также могут установить собственное использование в соответствии с реальной ситуацией:
I.<Настройки приложения>
<add key="Conntction" value="server=192.168.85.66;userid=sa;пароль=;database=Info;"/>
<Настройки приложения>
Определена константа строки подключения, и строку подключения можно изменить в реальных приложениях без изменения программного кода.
II.<Настройки приложения>
<add key="ErrPage" value="Error.aspx"/><appSettings> определяет страницу перенаправления при ошибке.
3. Формат раздела <компиляция>:
<компиляция
defaultLanguage="c#"
отладка = "истина"
/>
Язык I.default: Определите язык фонового кода. Вы можете выбрать два языка: C# и vb.net.
IIdebug: если true, отладка aspx запускается; если false, отладка aspx не запускается, что повышает производительность приложения во время его работы. Обычно программисты устанавливают для него значение true при разработке и устанавливают значение false при передаче его клиентам.
4. Формат раздела<customErrors>:
<customErrors
режим="RemoteOnly"
defaultRedirect="error.aspx"
<error statusCode="440" redirect="err440page.aspx"/>
<error statusCode="500" redirect="err500Page.aspx"/>
/>
I.mode: имеет 3 состояния: «Вкл.», «Выкл.» и «RemoteOnly». «Вкл.» означает, что настроенная информация всегда отображается; «Выкл.» означает, что подробная информация об ошибках asp.net всегда отображается; «RemoteOnly» означает, что настроенная информация отображается только для пользователей, которые не работают на локальном веб-сервере.
II.defaultRedirect: URL-адрес, используемый для перенаправления при возникновении ошибки. Необязательно.
III.statusCode: указывает код состояния ошибки, указывающий на конкретный статус ошибки.
IV. перенаправление: ошибка перенаправления URL.
5.Формат раздела <глобализация>:
<глобализация
requestEncoding="utf-8"
ответEncoding="utf-8"
fileEncoding="utf-8"
/>
I.requestEncoding: используется для проверки кодировки каждого входящего запроса.
II.responseEncoding: используется для проверки кодировки содержимого отправленного обратно ответа.
III.fileEncoding: используется для проверки кодировки по умолчанию для анализа aspx, asax и других файлов.
6. Формат раздела <sessionState>:
<sessionState
режим = «В процессе»
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="источник данных=127.0.0.1;Trusted_Connection=да"
без файлов cookie="ложь"
тайм-аут = "20"
/>
I.mode: разделен на состояния off, Inproc, StateServer, SqlServer.
mode = InProc хранится в процессе. Особенности: имеет наилучшую производительность и максимальную скорость, но не может использоваться несколькими серверами. mode = «StateServer» хранится на сервере состояний. Особенности: Когда необходимо хранить информацию о сеансе пользователя. серверы, используйте этот метод. Однако информация хранится на сервере состояния. При выходе из строя сервера состояния информация будет потеряна. Mode="SqlServer" сохраняется на сервере sql. Особенности: Рабочая нагрузка увеличится, но информация не будет потеряна.
II.stateConnectionString: укажите имя сервера, на котором приложение asp.net хранит состояние удаленного сеанса. По умолчанию используется локальный компьютер.
III.sqlConnectionString: при использовании базы данных состояния сеанса установите здесь строку подключения.
IV. Без файлов cookie: если установлено значение true, это означает, что состояние сеанса cookie не используется для идентификации клиента, в противном случае верно обратное;
V. TimeOut: используется для определения времени хранения состояния сеанса. Если лимит времени превышен, сеанс будет автоматически завершен.
7. Формат раздела <аутентификация>:
<режим аутентификации="Формы">
<forms name=".ASPXUSERDEMO" loginUrl="Login.aspx" Protection="All" timeout="30"/>
</аутентификация>
<авторизация>
<запретить пользователей="?"/>
</авторизация>
I.Windows: использовать метод аутентификации IIS.
II.Forms: использование проверки на основе форм
III.Паспорт: используйте режим проверки файлов cookie Passport.
IV.None: не использует какой-либо метод проверки. Значение атрибутов узла Forms, заложенных в него:
I.Name: указывает имя файла cookie HTTP, используемого для завершения аутентификации.
II.LoginUrl: URL-адрес страницы, которая перенаправляется в случае сбоя проверки или истечения времени ожидания. Обычно это страница входа, позволяющая пользователю снова войти в систему.
III.Защита: укажите метод защиты данных файлов cookie.
Возможна установка: Все Нет Проверка шифрования Четыре метода защиты
а. Все означает шифрование данных и проверку их достоверности двумя способами.
б. «Нет» означает, что файлы cookie не защищены.
в. Шифрование означает шифрование содержимого файлов cookie.
d. Валидация означает проверку действительности содержимого файлов cookie.
IV. TimeOut: укажите срок действия cookie. Войдите в систему снова по истечении времени ожидания.
Изменения файла Web.config во время выполнения могут вступить в силу без перезапуска службы (Примечание: исключение для раздела <processModel>). Конечно, файл Web.config является расширяемым. Вы можете настроить новые параметры конфигурации и написать обработчики разделов конфигурации для их обработки.
В файле конфигурации web.config (параметры конфигурации по умолчанию) весь следующий код должен находиться в
<конфигурация>
<система.веб>
и
</система.веб>
</конфигурация>
В целях обучения в следующих примерах этот тег xml опущен.
1. Роль раздела <authentication>: настроить поддержку аутентификации asp.NET (четыре типа: Windows, Forms, PassPort и None). Этот элемент можно объявить только на уровне компьютера, сайта или приложения. Элемент <authentication> необходимо использовать с разделом <authorization>.
Пример:
В следующем примере показан сайт настройки проверки подлинности на основе формы. Когда пользователь, не вошедший в систему, получает доступ к веб-странице, требующей проверки подлинности, веб-страница автоматически переходит на веб-страницу входа.
<режим аутентификации="Формы" >
<forms loginUrl="logon.aspx" name=".FormsAuthCookie"/>
</аутентификация>
Элемент loginUrl представляет имя веб-страницы входа в систему, а name представляет имя файла cookie.
2. Роль раздела <authorization>: контролирует доступ клиентов к ресурсам URL (например, разрешает доступ анонимным пользователям). Этот элемент можно объявить на любом уровне (компьютер, сайт, приложение, подкаталог или страница). Требуется вместе с разделом <authentication>.
Пример. В следующем примере отключается доступ анонимным пользователям.
<авторизация>
<запретить пользователей="?"/>
</авторизация>
Примечание. Вы можете использовать user.identity.name, чтобы получить текущее имя аутентифицированного пользователя; вы можете использовать метод web.Security.FormsAuthentication.RedirectFromLoginPage, чтобы перенаправить аутентифицированного пользователя на страницу, которую только что запросил пользователь.
3. Роль раздела <compilation>: настройка всех параметров компиляции, используемых asp.NET. Атрибут отладки по умолчанию — «True». После того, как программа скомпилирована и доставлена для использования, ему должно быть присвоено значение False (подробности описаны в файле Web.config, а пример здесь опущен).
4.<пользовательские ошибки>
Роль: предоставление информации о пользовательских сообщениях об ошибках для приложений asp.NET. Это не относится к ошибкам, возникающим в веб-службах XML.
Пример. При возникновении ошибки перейдите на пользовательскую страницу ошибок.
<customErrors defaultRedirect="ErrorPage.aspx" mode="RemoteOnly">
</customErrors>
Элемент defaultRedirect представляет имя настроенной веб-страницы ошибок. Элемент режима указывает: отображать пользовательскую (дружественную) информацию для пользователей, которые не работают на локальном веб-сервере.
5. Роль раздела <httpRuntime>: настройка параметров среды выполнения asp.NET HTTP. Этот раздел можно объявить на уровне компьютера, сайта, приложения и подкаталога.
Пример. Укажите максимальный размер загружаемых пользователем файлов до 4 МБ, максимальное время до 60 секунд и максимальное количество запросов до 100.
<httpRuntime maxRequestLength="4096" ExecutionTimeout="60" appRequestQueueLimit="100"/>
6. <страницы>
Роль: определяет параметры конфигурации, специфичные для страницы (например, включать ли состояние сеанса, состояние просмотра, определять ли ввод данных пользователем и т. д.). <pages> можно объявлять на уровне компьютера, сайта, приложения и подкаталога.
Пример: не определять наличие потенциально опасных данных в содержимом, введенном пользователем в браузере (Примечание: этот элемент обнаруживается по умолчанию. Если вы используете необнаружение, вы должны закодировать или проверить ввод пользователя). клиент Зашифрованное состояние просмотра проверяется при отправке страницы обратно, чтобы убедиться, что состояние просмотра не было изменено на стороне клиента. (Примечание: этот элемент не проверен по умолчанию)
<pagesuffer="true" EnableViewStateMac="true" validateRequest="false"/>
7. <sessionState>
Функция: настройка параметров состояния сеанса для текущего приложения (например, настройка включения состояния сеанса и места сохранения состояния сеанса).
Пример:
<sessionState mode="InProc" cookieless="true" timeout="20"/>
</sessionState>
Примечание:
mode="InProc" означает: хранить состояние сеанса локально (вы также можете сохранить его на удаленном сервере или сервере SAL или отключить состояние сеанса)
cookieless="true" означает: включить состояние сеанса, если браузер пользователя не поддерживает файлы cookie (по умолчанию — False).
timeout="20" означает: количество минут, в течение которых сессия может простаивать.
8. <след>
Функция: настройка службы отслеживания asp.NET, которая в основном используется для тестирования программ, чтобы определить места возникновения ошибок.
Пример: Ниже приведена конфигурация по умолчанию в Web.config:
<trace Enabled="false" requestLimit="10" pageOutput="false" TraceMode="SortByTime" localOnly="true" />
Примечание:
Enabled="false" означает не включать отслеживание;
requestLimit="10" указывает количество запросов отслеживания, хранящихся на сервере.
pageOutput="false" означает, что доступ к выходным данным трассировки возможен только через утилиту трассировки;
TraceMode="SortByTime" указывает, что информация трассировки отображается в том порядке, в котором обрабатываются трассировки.
localOnly="true" означает, что средство просмотра трассировки (trace.axd) используется только для хост-веб-сервера. Процесс настройки пользовательского файла Web.config разделен на два этапа.
1. Объявите имя раздела конфигурации и имя класса .NET Framework, который обрабатывает данные конфигурации, в разделе между тегами <configSections> и </configSections> в верхней части файла конфигурации.
2. Задайте фактические параметры конфигурации для объявленного раздела после области <configSections>.
Пример. Создайте раздел для хранения строк подключения к базе данных.
<конфигурация>
<конфигурационные секции>
<section name="appSettings" type="System.Configuration.NameValueFileSectionHandler, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
</configSections>
<Настройки приложения>
<add key="scon" value="server=a;database=northwind;uid=sa;pwd=123"/>
</appSettings>
<система.веб>
...
</система.веб>
</конфигурация>
Доступ к файлу Web.config Доступ к файлу Web.config можно получить с помощью коллекции статических строк ConfigurationSettings.AppSettings. Пример. Получите строку подключения, установленную в приведенном выше примере. Например:
защищенная статическая строка Isdebug = ConfigurationSettings.AppSettings["debug"]
2. Подробное объяснение конфигурации сеанса в web.config. После открытия файла конфигурации Web.config приложения мы найдем следующий абзац:
< состояние сеанса
режим = «В процессе»
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="источник данных=127.0.0.1;Trusted_Connection=да"
без файлов cookie="ложь"
тайм-аут = "20"
/>
В этом разделе указывается, как приложение хранит информацию о сеансе. Наши различные операции, описанные ниже, в основном сосредоточены на этой конфигурации. Давайте сначала посмотрим на значение содержимого, содержащегося в этой конфигурации. Синтаксис узла sessionState следующий:
< sessionState mode="Выкл.|InProc|StateServer|SQLServer"
без cookie="истина|ложь"
timeout="количество минут"
stateConnectionString="tcpip=сервер:порт"
sqlConnectionString="строка подключения SQL"
stateNetworkTimeout="количество секунд"
/>
Обязательные атрибуты: описание опции атрибута.
режим устанавливает, где хранить информацию о сеансе
Ø Выкл. установлено, чтобы не использовать функцию сеанса.
Ø InProc настроен на сохранение сеанса в процессе, что является методом хранения в asp. Это значение по умолчанию.
Ø StateServer настроен на сохранение сеанса в независимой службе состояния.
Настройки SQLServer сохраняют сеанс на сервере sql.
Необязательные атрибуты: описание опции атрибута.
Ø наборы без файлов cookie, в которых хранится информация о сеансе клиента,
Ø использует режим без файлов cookie,
Ø false Использовать режим cookie, это значение по умолчанию,
Ø тайм-аут устанавливает количество минут, по истечении которых сервер автоматически отказывается от информации о сеансе. Значение по умолчанию — 20 минут.
stateConnectionString задает имя сервера и номер порта, используемые при хранении информации о сеансе в службе состояний, например: «tcpip=127.0.0.1:42424». Этот атрибут является обязательным, если значением режима является StateServer.
sqlConnectionString устанавливает строку подключения при подключении к серверу sql. Например, «источник данных = localhost; Интегрированная безопасность = SSPI; Начальный каталог = Northwind». Этот атрибут является обязательным, если значением режима является SQLServer.
stateNetworkTimeout задает количество секунд простоя, после которого соединение TCP/IP между веб-сервером и сервером, хранящим информацию о состоянии, отключается при использовании режима StateServer для хранения состояния сеанса. Значение по умолчанию — 10 секунд.
Хранение статуса сеанса клиента в asp.NET показано во введении к модели сеанса выше. Вы можете обнаружить, что статус сеанса должен храниться в двух местах, а именно на клиенте и на сервере. Клиент несет ответственность только за сохранение SessionID соответствующего веб-сайта, а остальная информация о сеансе сохраняется на стороне сервера. В asp идентификатор сеанса клиента фактически хранится в виде файла cookie. Если пользователь решит отключить файлы cookie в настройках браузера, он не сможет пользоваться удобством сеанса и даже не сможет получить доступ к определенным веб-сайтам. Чтобы решить вышеуказанные проблемы, метод хранения информации о сеансе клиента в asp.NET разделен на два типа: Cookie и Cookieless.
В asp.NET по умолчанию файлы cookie по-прежнему используются для хранения информации о сеансе на клиенте. Если мы хотим использовать Cookieless для хранения информации о сеансе на клиенте, метод будет следующим:
Найдите корневой каталог текущего веб-приложения, откройте файл Web.Config и найдите следующий абзац:
< состояние сеанса
режим = «В процессе»
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="источник данных=127.0.0.1;Trusted_Connection=да"
без файлов cookie="ложь"
тайм-аут = "20"
/>
Значение cookieless="false" в этом абзаце изменено на: cookieless="true". Таким образом, информация о сеансе клиента больше не сохраняется с помощью файлов cookie, а сохраняется через URL-адрес. Закройте текущий IE, откройте новый IE и снова откройте веб-приложение. Вы увидите нечто похожее на следующее:
Среди них то, что выделено жирным шрифтом в http://localhost/MyTestApplication/(ulqsek45heu3ic2a5zgdl245 )/default.aspx, — это идентификатор сеанса клиента. Обратите внимание, что эта информация автоматически добавляется IIS и не влияет на предыдущие обычные соединения.
Подготовка к сохранению состояния сеанса на стороне сервера в asp.NET:
Чтобы лучше изучить экспериментальное явление, вы можете создать страницу с именем SessionState.aspx, а затем добавить следующие коды в <body></body>.
<scriptrunat="сервер">
Sub Session_Add (отправитель как объект, e как EventArgs)
сеанс («MySession») = text1.Value
span1.InnerHtml = "Данные сеанса обновлены! < P>Ваш сеанс содержит: <font color=red>" & session("MySession()" & "</font>"
Конец субтитра
Sub CheckSession (отправитель как объект, eAs EventArgs)
Если (Сессия("MySession")Ничего) Тогда
span1.InnerHtml = "НИЧЕГО, ДАННЫЕ сеанса ПОТЕРЯНЫ!"
Еще
span1.InnerHtml = "Ваш сеанс содержит: <font color= red>" & session("MySession").ToString() & "</font>"
Конец, если
Конец субтитра
</скрипт>
< formrunat="server"id="Form2">
< inputid="text1"type="text"runat="server"name="text1">
< inputtype="submit"runat="server"OnServerClick="Session_Add"
value="Добавить в состояние сеанса " id="Submit1"name="Submit1">
< inputtype="submit"runat="server"OnServerClick="CheckSession"
value=" Просмотр состояния сеанса " id="Submit2"name="Submit2">
</форма>
< hrsize="1">
< fontsize="6">< spanid="span1"runat="server" />< /font>
Страницу SessionState.aspx можно использовать для проверки того, потеряна ли информация о сеансе на текущем сервере.
Сохранение информации о сеансе сервера в процессе Вернемся к предыдущему пункту файла Web.config:
< состояние сеанса
режим = «В процессе»
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="источник данных=127.0.0.1;Trusted_Connection=да"
без файлов cookie="ложь"
тайм-аут = "20"
/>
Если значение режима — InProc, это указывает, что сервер использует этот режим.
Этот метод аналогичен предыдущему режиму в asp, то есть сервер сохраняет информацию о сеансе в процессе IIS. При завершении работы и перезапуске IIS эта информация будет потеряна. Но у этого режима есть и свое самое большое преимущество – высочайшая производительность. Поскольку вся информация о сеансе хранится в процессе IIS, IIS может быстро получить доступ к этой информации. Производительность в этом режиме выше, чем при хранении информации о сеансе вне процесса или хранении информации о сеансе в SQL Server. Этот режим также является способом asp.NET по умолчанию.
Хорошо, теперь проведем эксперимент. Откройте страницу SessionState.aspx прямо сейчас и введите несколько символов, чтобы сохранить их в сеансе. Затем давайте перезапустим IIS. Обратите внимание, что необходимо не остановить и перезапустить текущий сайт, а щелкнуть правой кнопкой мыши узел с именем локального компьютера в IIS и выбрать «Перезапустить IIS». (Я думаю, что когда я использовал NT4, мне пришлось перезагрузить компьютер, чтобы перезапустить IIS. Microsoft действительно @#$%^&) Вернитесь на страницу SessionState.aspx, проверьте информацию о сеансе только что и обнаружите, что информация была потерянный.
Хранение информации о сеансе сервера вне процесса. Сначала давайте откроем инструменты управления -> Службы, найдем службу с именем: asp.NET State Service и запустим ее. Фактически этот сервис запускает процесс сохранения информации о сеансе. После запуска этой службы вы можете увидеть процесс с именем aspnet_state.exe в Диспетчере задач Windows->Процессы. Это процесс, в котором мы сохраняем информацию о сеансе.
Затем вернитесь к предыдущему абзацу в файле Web.config и измените значение режима на StateServer. После сохранения файла снова откройте IE, откройте страницу SessionState.aspx и сохраните некоторую информацию в сеансе. Сейчас давайте перезапустим IIS и вернемся на страницу SessionState.aspx, чтобы проверить информацию о сеансе прямо сейчас и убедиться, что она не потеряна.
Фактически, такой способ хранения информации о сеансе вне процесса означает не только то, что информация может храниться вне процесса локальной машины, но также информация о сеансе может храниться в процессах других серверов. На данный момент вам необходимо не только изменить значение режима на StateServer, но также необходимо настроить соответствующие параметры в stateConnectionString. Например, ваш расчет — 192.168.0.1. Если вы хотите сохранить сессию в процессе компьютера с IP-адресом 192.168.0.2, вам нужно установить его так: stateConnectionString="tcpip=192.168.0.2:42424". Конечно, не забудьте установить .NET Framework на компьютер с адресом 192.168.0.2 и запустить службу asp.NET State Services.
Хранение информации о сеансе сервера на сервере sql Для начала давайте проделаем некоторую подготовительную работу. Запустите службы sql-сервера и прокси-сервера sql-сервера. Выполните файл сценария с именем InstallSqlState.sql на сервере sql. Этот файл сценария создаст базу данных на SQL Server специально для хранения информации о сеансе, а также задание агента SQL Server, которое будет поддерживать базу данных с информацией о сеансе. Мы можем найти этот файл по следующему пути:
[системный диск]winntMicrosoft.NETFramework[версия]
Затем откройте анализатор запросов, подключитесь к sql-серверу, прямо сейчас откройте файл и выполните его. Подождите немного, и база данных и задание будут созданы. В это время вы можете открыть Enterprise Manager и увидеть, что добавлена новая база данных под названием ASPState. Но в этой базе данных есть только несколько хранимых процедур, а пользовательской таблицы нет. Фактически информация о сеансе хранится в таблице ASPStateTempSessions базы данных tempdb, а другая таблица ASPStateTempApplications хранит информацию об объекте приложения в asp. Эти две таблицы также были созданы сценарием только что. Кроме того, проверьте Управление->Агент сервера SQL->Задания и обнаружите, что существует также дополнительное задание под названием ASPState_Job_DeleteExpiredSessions. Это задание фактически удаляет информацию об истекшем сеансе из таблицы ASPStateTempSessions каждую минуту.
Затем мы возвращаемся к файлу Web.config и изменяем значение режима на SQLServer. Обратите внимание, что вам также необходимо одновременно изменить значение sqlConnectionString. Формат:
sqlConnectionString="источник данных=localhost; Интегрированная безопасность=SSPI;"
Источник данных относится к IP-адресу сервера SQL-сервера. Если сервер SQL и IIS являются одним и тем же компьютером, просто напишите 127.0.0.1. Интегрированная безопасность = SSPI означает использование встроенной аутентификации Windows. Таким образом, доступ к базе данных будет осуществляться как asp.NET. Благодаря этой конфигурации вы можете получить более высокий уровень безопасности, чем метод аутентификации сервера sql, используя userid=sa;password=password. . Конечно, если сервер sql работает на другом компьютере, вам может потребоваться поддерживать согласованность аутентификации с обеих сторон через домен Active Directory.
Опять же, проведем эксперимент. Добавьте информацию о сеансе в SessionState.aspx, а затем обнаружите, что информация о сеансе уже существует на сервере SQL. Даже если вы перезагрузите компьютер, информация о сеансе не будет потеряна. Теперь вы полностью увидели, как выглядит информация о сеансе, и она хранится в SQL Server. Что вы можете сделать, зависит от вашей производительности.
Резюме 3. Общие настройки аутентификации формы asp.net
Общие настройки аутентификации формы asp.net:
1: В web.config добавьте аутентификацию по форме;
<режим аутентификации="Формы">
<forms name="auth" loginUrl="index.aspx" timeout="30"></forms>
</аутентификация>
<авторизация>
<запретить пользователей="?"
</авторизация>
2: Если есть страница регистрации, анонимным пользователям должно быть разрешено вызывать страницу регистрации для регистрации;
Следующий код должен находиться между <configuration><system.web> и не должен включаться между <system.web>..</system.web>;
----------------Указывает, что анонимным пользователям разрешен доступ к странице userReg.aspx.
<location path="userReg.aspx">
<система.веб>
<авторизация>
<разрешить пользователей="?" />
</авторизация>
</система.веб>
</местоположение>
3. После успешного входа в систему необходимо создать билет проверки личности, чтобы указать, что аутентифицированный законный пользователь прошел;
если (вход успешен)
System.Web.Security.FormsAuthentication.SetAuthCookie(имя пользователя, ложь);
4. Доступ к файлу Web.config. Доступ к файлу Web.config можно получить с помощью коллекции статических строк ConfigurationSettings.AppSettings. Пример. Получите строку подключения, установленную в приведенном выше примере. Например:
защищенная статическая строка Isdebug = ConfigurationSettings.AppSettings["scon"]
Оптимизация производительности asp.Net.
(1).Выберите метод хранения состояния сеанса.
Настройте в файле Webconfig:
<sessionState mode="???" stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="источник данных=127.0.0.1;Trusted_Connection=да"
cookieless="false" таймаут="20"/>
ASP.NET имеет три способа хранения информации о состоянии сеанса:
1. Сохраняется в процессе: режим атрибута = InProc.
Особенности: Он имеет лучшую производительность и самую высокую скорость, но его нельзя использовать на нескольких серверах.
2. Сохраняется на сервере состояний: атрибут mode = «StateServer»
Возможности: используйте этот метод, когда информация о сеансе пользователя должна храниться на всех серверах.
Но информация хранится на сервере состояний, и если сервер состояний выйдет из строя, информация будет утеряна.
3. Сохраняется на сервере sql: атрибут mode="SqlServer"
Особенности: Объем работы станет больше, но информация не потеряется.
Еще одна вещь:
I. Поскольку некоторые страницы не требуют состояния сеанса, состояние сеанса можно отключить:
Код следующий: <%@ Page EnableSessionState="false" %>
II Если странице требуется доступ к переменным сеанса, но ей не разрешено их изменять, вы можете установить статус сеанса страницы только для чтения:
Код следующий: <%@ Page EnableSessionState="false" %>
При его использовании вы можете выбрать определенный метод в зависимости от конкретной ситуации.
(2). Используйте Page.IsPostBack.
Page.IsPostBack указывает, возвращается ли оно от клиента. При первом запуске оно не возвращается от клиента.
Имеет значение false, когда событие на странице инициируется или страница обновляется, значение Page.IsPostBack становится истинным, поскольку это обратная передача;
Обычно используется в методе Page_Load:
частная пустота Page_Load (отправитель объекта, EventArgs e)
{
если(!Page.IsPostBack)
{
....; //Код для инициализации страницы. Эти коды выполняются при первой инициализации страницы и при второй отправке обратно.
//Не будет выполняться снова. Повышайте эффективность.
}
}
Часто приходится использовать IsPostBack, поскольку некоторым элементам управления необходимо сохранять свое состояние после инициализации.
Например: DropDownList, если он инициализируется каждый раз, независимо от того, какой вариант выбирает пользователь, он будет инициализирован значением по умолчанию.
(3) Избегайте использования элементов управления сервером.
1. Для отображения общей статической информации старайтесь не использовать для ее отображения серверные элементы управления. Поскольку серверные элементы управления должны отправлять обратную связь на сервер для выполнения,
Это снизит эффективность выполнения программы. Обычно это можно отобразить с помощью <DIV>.
Если используются элементы управления на стороне сервера, удаление: runat="server" также повысит эффективность.
2. Отключите просмотр состояния серверных элементов управления. Некоторым элементам управления не требуется сохранять свое состояние. Вы можете установить их свойства: EnableViewState=false;
Если для всего элемента управления страницей не требуется поддерживать представление состояния, вы можете установить для представления состояния всей страницы значение false:
Код следующий: <%@ Page EnableViewState="false"%>
3. Настройте в файле Web.Config:
Сеансы asp.NET можно настроить в элементе Sessionsstate в Web.config или Machine.config.
Вот пример настроек в Web.config:
<Sessionsstate timeout="10" cookieless="false" mode="Inproc" />
(4). Избегайте использования DataGrid.
Все знают, что DataGrid — это мощный инструмент. Однако, хотя он и мощный, он также увеличивает нагрузку на производительность. Обычно используйте другие элементы управления: DataList.
Или управление повторителем может добиться этого, постарайтесь не использовать DataGrid.
(5).Строковые операции
1. Избегайте операций по упаковке. Операции по упаковке менее эффективны.
Например, запустите два фрагмента кода:
строковый тест="";
for(для int i=0;i<10000;i++)
{
тест = тест + я;
}
и
строковый тест="";
for(для int i=0;i<10000;i++)
{
тест = тест + i.ToString();
}
Приведенный ниже фрагмент кода, очевидно, более эффективен. Поскольку i — целое число, перед подключением система должна сначала упаковать и преобразовать i в строковый тип.
Читатели могут скопировать его на свои машины и протестировать.
2. Используйте класс StringBulider.
При выполнении конкатенации строк: string str = str1 + str2 + ....;
Как правило, для более чем трех соединений лучше использовать StringBuilder вместо класса String, чтобы избежать повторного создания строковых объектов.
потеря производительности.
Обычно используется при сборке операторов sql: StringBulider.
Читатели могут протестировать его на своих машинах.
3. Используйте как можно меньше:
пытаться
{}
ловить
{}
окончательно
{}
Оператор. Эффективность выполнения этого оператора относительно низка.
(6) Оптимизация использования ADO.Net.
1. Подключения к базе данных открываются и закрываются. Открывайте, когда необходимо соединение, и закрывайте его сразу после доступа к базе данных.
Например, давайте посмотрим на два фрагмента кода:
Я.
DataSet ds = новый DataSet();
SqlConnection MyConnection = новый SqlConnection("server=localhost; uid=sa; pwd=; база данных=NorthWind");
SqlCommand myCommand = новый SqlCommand (strSql, MyConnection);
SqlDataAdapter myAdapter = новый SqlDataAdapter (queryStr, ConnectionStr);
MyConnection.Open(); //Открываем соединение
for(int i=0;i<1000;i++) //цикл for имитирует операции бизнес-логики перед получением данных
{
Thread.Sleep(1000);
}
мойАдаптер.Заполнить(дс);
for(int i=0;i<1000;i++) //цикл for имитирует операции бизнес-логики после получения данных
{
Thread.Sleep(1000);
}
MyConnection.Close(); //Закрываем соединение
II.
DataSet ds = новый DataSet();
SqlConnection MyConnection = новый SqlConnection("server=localhost; uid=sa; pwd=; база данных=NorthWind");
SqlCommand myCommand = новый SqlCommand (strSql, MyConnection);
SqlDataAdapter myAdapter = новый SqlDataAdapter (queryStr, ConnectionStr);
for(int i=0;i<1000;i++) //цикл for имитирует операции бизнес-логики перед получением данных
{
Thread.Sleep(1000);
}
MyConnection.Open(); //Открываем соединение
мойАдаптер.Заполнить(дс);
MyConnection.Close(); //Закрываем соединение
for(int i=0;i<1000;i++) ////Цикл for имитирует операцию бизнес-логики после получения данных
{
Thread.Sleep(1000);
}
Код дисплея II намного лучше, чем код I. Код I занимает соединение раньше. Если имеется много пользователей, пул соединений, скорее всего, будет полон. В тяжелых случаях может произойти авария.
2. Запрос к базе данных
I. Непосредственно генерировать операторы sql. SQL Server приходится каждый раз компилировать его, и большого улучшения производительности не будет. Кроме того, это недостаточно безопасно. Легко атакован.
II Используйте команду sql с параметрами. Таким образом, сервер sql компилирует его только один раз, и скомпилированные команды можно повторно использовать для разных параметров. Улучшенная производительность.
III. Используйте хранимые процедуры сервера sql. Компилируйте один раз. Он независим, его легко изменять и поддерживать. Он может выполнять функцию отправки операторов несколько раз за один раз.
поток. Хранимые процедуры не обязательно более эффективны, чем операторы. Если бизнес-логика очень сложна, иногда операторы более эффективны, чем хранимые процедуры.
(6) Оптимизация кэша.
Существует два типа кеша: кеш страниц и кеш API.
1. Используйте кэширование страниц и кэширование фрагментов.
<%@ OutputCache Duration="5" VaryByParam="None"%>
<%@ OutputCache Duration=60 VaryByParam="TextBox1,TextBox2" %>
Примечание. Продолжительность – установить срок действия кэша;
VarByParam определяет, изменяется ли настройка в соответствии с параметрами. Если значение «Нет», все параметры используют один и тот же кэш.
При установке TextBox1 кэшируйте их отдельно по разным значениям TextBox1, при наличии нескольких параметров кэшируйте их в комбинации;
2.API-кэш. для использования в приложениях
I. Пример использования кэша:
http://blog.csdn.net/chengking/archive/2005/10/03/494545.aspx
II Обратите внимание на разницу между Page.Cache и HttpContext.Current.Cache при использовании:
Они ссылаются на один и тот же объект. В Page используйте Page.Cache. Если вы используете его в global.asax или в своем собственном классе: HttpContext.Current.Cache. В некоторых событиях из-за отсутствия HttpContext используйте HttpRuntime.Cache.