Я могу получить “ВОЕННОЕ развертывание типа” файла с ASP.NET?

Как правило, когда я не знаю тип, я не предоставляю один. Если вы чувствуете, что должны, и вообще не знаете, что это такое, ваш лучший выбор - Object.

Если вы знаете его пару ключ-значение и все значения являются строками Object.

Есть также более продвинутые типы, такие как @record и @interface, которые я оставлю в документации для описания.

5
задан Cheeso 6 March 2009 в 17:46
поделиться

2 ответа

Хотя не основной подход в ASP.NET, это очень возможно, с помощью конструкции, названной VirtualPathProvider для ASP.NET. С ним можно служить содержанию веб-сайта из вещей, которые не являются файловой системой. Для одного примера Вы могли служить веб-сайту ASP.NET непосредственно из zip-файла, не разархивировав файлы к диску, сначала.

Вот загрузка, которая демонстрирует или иллюстрирует понятие, пользуясь библиотекой DotNetZip для помощи ASP.NET в вытаскивании содержания из zip.

Интересные биты кода:

using Ionic.Zip;

namespace Ionic.Zip.Web.VirtualPathProvider
{
    public class ZipFileVirtualPathProvider : System.Web.Hosting.VirtualPathProvider
    {
        ZipFile _zipFile;

        public ZipFileVirtualPathProvider (string zipFilename)
            : base () {
            _zipFile =  ZipFile.Read(zipFilename);
        }

        ~ZipFileVirtualPathProvider () {
            _zipFile.Dispose ();
        }

        public override bool FileExists (string virtualPath)
        {
            string zipPath = Util.ConvertVirtualPathToZipPath (virtualPath, true);
            ZipEntry zipEntry = _zipFile[zipPath];

            if (zipEntry != null)
            {
                return !zipEntry.IsDirectory;
            }
            else
            {
                // Here you may want to return Previous.FileExists(virtualPath) instead of false
                // if you want to give the previously registered provider a process to serve the file
                return false;
            }
        }

        public override bool DirectoryExists (string virtualDir)
        {
            string zipPath = Util.ConvertVirtualPathToZipPath (virtualDir, false);
            ZipEntry zipEntry = _zipFile[zipPath];

            if (zipEntry != null)
            {
                return zipEntry.IsDirectory;
            }
            else
            {
                // Here you may want to return Previous.DirectoryExists(virtualDir) instead of false
                // if you want to give the previously registered provider a chance to process the directory
                return false;
            }
        }

        public override VirtualFile GetFile (string virtualPath) {
            return new ZipVirtualFile (virtualPath, _zipFile);
        }

        public override VirtualDirectory GetDirectory (string virtualDir)
        {
            return new ZipVirtualDirectory (virtualDir, _zipFile);
        }

        public override string GetFileHash(string virtualPath, System.Collections.IEnumerable virtualPathDependencies)
        {
            return null;
        }

        public override System.Web.Caching.CacheDependency GetCacheDependency(String virtualPath, System.Collections.IEnumerable virtualPathDependencies, DateTime utcStart)
        {
            return null;
        }
    }
}

VPP создают работы с ASP.NET 2.0 или позже, работы с любым веб-сайтом. Можно ли, конечно, адаптировать идею получить содержание от базы данных, CMS, или...??

5
ответ дан 14 December 2019 в 04:48
поделиться

Частью решения являются встроенные ресурсы . Это заботится обо всех статических файлах.

Частью решения является использование проекта веб-развертывания , компилирующего все страницы (то есть веб-сайт, который не обновляется) в единую сборку. Это позаботится обо всех файлах .cs.

Итак, в bin остается .dll, поддерживающая файлы .dll и файлы-заглушки .aspx. IIS по умолчанию хочет, чтобы файл aspx существовал до того, как он попытается передать его на сервер, отсюда и заглушка.

dll и файлы-заглушки .aspx. IIS по умолчанию хочет, чтобы файл aspx существовал до того, как он попытается передать его на сервер, отсюда и заглушка.

dll и файлы-заглушки .aspx. IIS по умолчанию хочет, чтобы файл aspx существовал до того, как он попытается передать его на сервер, отсюда и заглушка.

3
ответ дан 14 December 2019 в 04:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: