<body>
<form id="form1" runat="server">
<div>
<b>This is the physical page</b><br />
Served last time at <%= DateTime.Now.ToString() %>
</div>
</form>
</body>
</html>
После этого вам потребуется создать свою реализацию класса VirtualPathProvider. Класс VirtualPathProvider определен в пространстве имен System.Web.Hosting. Просто добавьте новый класс в каталог App_Code и унаследуйте его от VirtualPathProvider. Класс должен реализовать как минимум следующие методы:
public class MyProvider : System,ЩвЪ„Hosting.VirtualPathProvider
{
public static void Appinitialize()
{
MyProvider fileProvider = new MyProvider();
System.Web.Hosting.HostingEnvironment.RegisterVirtualPathProvider(fileProvider);
}
public override bool FileExists(string virtualPath)
{
throw new Exception("The method or operation is not implemented.");
}
public override System.Web.Hosting.VirtualFile GetFile(string virtualPath)
{
throw new Exception("The method or operation is not implemented.");
}
}
Также класс VirtualPathProvider имеет функции для проверки каталога (DirectoryExists) и получения хеш-файлов (GetFileHash), а также проверки кэша (GetCacheDependency), которые следует переопределять в более сложных решениях. Кроме того, на данный момент он требует от вас реализации статического метода Appinitialize. Ecли метод присутствует в классе VirtualPathProvider, он автоматически вызывается платформой. С помощью этого метода вы создаете экземпляр своего собственного поставщика и регистрируете его в среде хостинга. Если вы не сделаете этого, платформа просто не будет знать о вашем виртуальном поставщике и, поэтому, вообще не будет его использовать.
Как можно видеть в предыдущем фрагменте кода, метод GetFile должен вернуть виртуальный файл. Этот виртуальный файл затем будет использоваться платформой хостинга ASP.NET для открытия файла. В результате он предлагает метод Open. Метод Open должен вернуть содержимое для записи в вашей базе данных, но как сюда попадет содержимое для вашей базы данных? Сам класс VirtualPatnProvider не принимает никаких параметров кроме виртуального пути к файлу. И, что совсем неудивительно, он является абстрактным классом.
предыдущая следующая страница вначало главы оглавление
789