Спонсор: Microsoft
Опубликован: 14.11.2006 | Доступ: свободный | Студентов: 5820 / 513 | Оценка: 4.18 / 3.74 | Длительность: 16:37:00
ISBN: 978-5-9556-0085-7
Лекция 15:

Конфигурирование проекта. Глобальные объекты

< Лекция 14 || Лекция 15: 12345 || Лекция 16 >
Аннотация: Конфигурационные файлы, переменные события приложения и сессии, работа с состоянием отображения.

В каждом проекте существуют файлы, в которых содержится информация, относящаяся ко всему сайту. Это файл конфигурации web.config и файл global.asax.

Файл Web.config

ASP .NET конфигурируется с помощью нескольких глобальных файлов .config, которые находятся в директории .NET Framework. Это файлы формата XML, которые позволяют легко изменить поведение ASP .NET. Например, там находятся machine.config и machine.config.comments, в которых содержатся настройки сервера.

Например, в узле DbProviderFactories файла machine.config находится список провайдеров баз данных. Эти провайдеры появляются в диалоге Add Connection при добавлении новых соединений с источниками данных. В список можно добавлять новых провайдеров:

<DbProviderFactories>
      <add name="Odbc Data Provider" invariant="System.Data.Odbc" 
description=".Net Framework Data Provider for Odbc" 
type="System.Data.Odbc.OdbcFactory, System.Data, Version=2.0.0.0, 
Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      <add name="OleDb Data Provider" 
invariant="System.Data.OleDb" description=".Net Framework Data 
Provider for OleDb" type="System.Data.OleDb.OleDbFactory, 
System.Data, Version=2.0.0.0, Culture=neutral, 
PublicKeyToken=b77a5c561934e089" />
      <add name="OracleClient Data Provider" 
invariant="System.Data.OracleClient" description=".Net Framework 
Data Provider for Oracle" 
type="System.Data.OracleClient.OracleClientFactory, 
System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, 
PublicKeyToken=b77a5c561934e089" />
      <add name="SqlClient Data Provider" 
invariant="System.Data.SqlClient" description=".Net Framework Data 
Provider for SqlServer" 
type="System.Data.SqlClient.SqlClientFactory, System.Data, 
Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
/>
      <add name="SQL Server CE Data Provider" 
invariant="Microsoft.SqlServerCe.Client" description=".NET 
Framework Data Provider for Microsoft SQL Server 2005 Mobile 
Edition" type="Microsoft.SqlServerCe.Client.SqlCeClientFactory, 
Microsoft.SqlServerCe.Client, Version=9.0.242.0, Culture=neutral, 
PublicKeyToken=89845dcd8080cc91" />
    </DbProviderFactories>

В файле machine.config содержится информация, необходимая для работы служб персонализации и управления ролями. Профили пользователей хранятся в aspnetdb.mdf локального сервера SQL Express:

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

Каждая страница ASP .NET по умолчанию может обращаться к некоторым пространствам имен. Список этих пространств имен определен в конфигурационном файле <windir>\Microsoft.NET\Framework\<version>\CONFIG\web.config:

<pages>
        <namespaces>
            <add namespace="System" />
            <add namespace="System.Collections" />
            <add namespace="System.Collections.Specialized" />
            <add namespace="System.Configuration" />
            <add namespace="System.Text" />
            <add namespace="System.Text.RegularExpressions" />
            <add namespace="System.Web" />
            <add namespace="System.Web.Caching" />
            <add namespace="System.Web.SessionState" />
            <add namespace="System.Web.Security" />
            <add namespace="System.Web.Profile" />
            <add namespace="System.Web.UI" />
            <add namespace="System.Web.UI.WebControls" />
            <add namespace="System.Web.UI.WebControls.WebParts" />
            <add namespace="System.Web.UI.HtmlControls" />
       </namespaces>

Вы можете изменять этот список, например добавить те пространства имен, которые используете во всех проектах. Но будьте осторожны, потому что в разных пространствах имен определены классы с одинаковыми именами. Например, класс Label определен в System.Windows.Forms и в System.Web.UI.WebControls, но в ASP .NET нужен только второй. Использование класса Label, когда включены оба заголовка, приведет к ошибке компиляции.

Классы находятся в сборках (assembly), и если вы хотите использовать нестандартную сборку, в проекте нужно создать ссылку на нее. Например, при работе с базой данных Oracle включается сборка System.Data.OracleClient. Чтобы создать ссылку, выберите в меню Website пункт Add Reference и выберите нужный компонент. В файл web.config проекта добавится пункт

<assemblies>
<add assembly="System.Data.OracleClient, Version=2.0.0.0, 
Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
</assemblies>

Какие сборки включаются по умолчанию, также определено в конфигурационном файле .NET Framework web.config:

<compilation>
   <add assembly="mscorlib" />
   <add assembly="System, Version=2.0.0.0, Culture=neutral, 
PublicKeyToken=b77a5c561934e089" />
   <add assembly="System.Configuration, Version=2.0.0.0, 
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
   <add assembly="System.Web, Version=2.0.0.0, Culture=neutral, 
PublicKeyToken=b03f5f7f11d50a3a" />
   <add assembly="System.Data, Version=2.0.0.0, Culture=neutral, 
PublicKeyToken=b77a5c561934e089" />
   <add assembly="System.Web.Services, Version=2.0.0.0, 
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
   <add assembly="System.Xml, Version=2.0.0.0, Culture=neutral, 
PublicKeyToken=b77a5c561934e089" />
   <add assembly="System.Drawing, Version=2.0.0.0, Culture=neu-
tral, PublicKeyToken=b03f5f7f11d50a3a" />
   <add assembly="System.EnterpriseServices, Version=2.0.0.0, 
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
   <add assembly="System.Web.Mobile, Version=2.0.0.0, 
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
   <add assembly="*" />
</assemblies>

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

Глобальные настройки применяются иерархически, то есть ко всем приложениям сайта, если какая-то настройка не переопределена в локальном файле Web.config. Web.config имеет XML-формат и находится в корневой директории сайта. В поддиректориях проекта могут находиться свои конфигурационные файлы, действие которых распространяется на данную директорию.

< Лекция 14 || Лекция 15: 12345 || Лекция 16 >
Алексей Савельев
Алексей Савельев

https://technet.microsoft.com/en-us/library/ms143221(v=sql.105).aspx

Денис Прокофьев
Денис Прокофьев

Везде написано, что это самый независимый и простой в использовании навигационный элемент управления, что он работает сразу с web.sitemap и не требует определения SiteMapDataSource.

Моя карта сайта состоит из двух страниц, вложенных друг в друга. asp:Menu, asp:TreeView отбображаются как ожидалось, а вот asp:SiteMapPath - нет. Он не виден нигде. Однако на его месте формируется разметка: <span id="SiteMapPath1"><a href="#SiteMapPath1_SkipLink" style="position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden;">Проход по ссылкам навигации</a><a id="SiteMapPath1_SkipLink"></a></span> - т.е. элемент отрабатывает.

В словах xHTML это выглядит так: <asp:SiteMapPath ID="SiteMapPath1" runat="server" />. Причем не важно - внутри тега form или снаружи - всегда одинаково.

Т.к. другие нав. ЭУ работают через простой источник данных без ошибок, делаю вывод - карта составлена правильно. ИД: <asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" />

Карта: <?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
  <siteMapNode url="~/L11_1_simplePage.aspx" title="Страница 1"  description="Простая страница 1." >
    <siteMapNode url="~/L11_1SimplePage2.aspx" title="Страница 2"  description="Простая страница 2" />
  </siteMapNode>
</siteMap>

Почему так происходит? Вроде делаю все по примерам. VS Community 2015. NetFramework в проекте: v4.0.30319

Анна Малова
Анна Малова
Азербайджан, Баку
Дмитрий Крюков
Дмитрий Крюков
Россия, Москва