<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

Hosted by uCoz