Страницы

Поиск по вопросам

Показаны сообщения с ярлыком iis. Показать все сообщения
Показаны сообщения с ярлыком iis. Показать все сообщения

суббота, 11 апреля 2020 г.

Редирект с HTTP на HTTPS в IIS 8.5

#https #iis #http_redirect

                    
Установил Url Rewrite 2.0 и сделал по инструкции данный редирект. В веб конфиге
получилось так:


  
       
            
                
                    
                
                
        
  




Но возникает ошибка TOO MANY REDIRECTS 
    


Ответы

Ответ 1



Я обычно делаю так:

воскресенье, 15 марта 2020 г.

Долгие задачи в IIS сервер

#net #email #iis


Есть задача разработать сервис для рассылки почты, которым будут пользоваться остальные
сервисы/приложения/сайты внутри компании. Планирую сделать WEB-сервис. 
Схема примерно такая: 


есть паблик метод который принимает на вход что рассылать и кому.
метод получает пачку задач.
Метод порождает поток, который берет задачи и рассылает потихонечку. Сам метод продолжает
ожидать новых задач.


Есть минимум 2 проблемы:


До этого я всегда размещал сервисы в IIS. Однако, при наших объемах расылки, мы теоретически
можем получить задачу которая будет длится часы. Насколько я понимаю IIS может сам
прерывать задачи, которые длятся долгое время. Как мне этого избежать?
Сервис работает в контексте IIS. Думаю (но не уверен), что реально мой метод будет
не порождать потоки, а резервировать существующие внутри пула потоков IIS. Итого мы
можем в результате залочить все потоки и полностью заблокировать сервис.


Какой наиболее простой выход из этой ситуации? 
Возможно, мне стоит использовать SelfHosting WCF?
    


Ответы

Ответ 1



Нет, проблем с прерыванием задач не будет. Просто потому что у вас задача в отдельном потоке - IIS прерывает только те задачи, которые он запускал сам. Кстати, без отдельного потока он бы тоже не стал прибивать задачу - WCF служба неподвластна IIS, даже если использует его для активации. Если вы создаете поток через new Thread - то это будет именно отдельный поток, не имеющий никакого отношения к пулу IIS. В других случаях - да, такая проблема присутствует (кстати, у WCF и IIS тоже общие пулы). Способы "украсть" поток из общего пула: delegate.BeginInvoke ThreadPool.QueueUserWorkItem new Task BackgroundWorker Просто синхронная работа в операции WCF и еще куча более редких способов. Способы щадящей работы с общим пулом потоков: new Thread Использование асинхронных методов (они будут выполняться в общем пуле - но не будут занимать его надолго). На самом деле, проблемы вы ищите немного не там. Дело в том, что долгие операции рано или поздно захочется сделать еще и возобновляемыми, чтобы можно было, к примеру, выключить сервер для установки обновлений или для переезда на другой сервер - а потом продолжить все то, что не успело выполниться. Отдельную службу можно настроить, чтобы она запускалась автоматически. А сайт IIS - нет. Когда перед вами встанет такая задача - переход на SelfHosting WCF будет хорошим решением.

Ответ 2



Итого мы можем в результате залочить все потоки и полностью заблокировать сервис. Хотел бы немного осветить этот пункт. Вам совсем не нужно каждый раз создавать по потоку на каждый вызов. Я совсем не знаком с разработкой в контексте IIS, но уверен, что внутри можно реализовать некий сервис - главный управляющий поток (если он требуется) и N потоков-рабочих. Сервис представляет собой просто обертку над одной большой очередью заданий, которые потоки-рабочие берут по одной и выполняют, и когда появляется необходимость отправить пачку писем, принявший эти письма поток должен просто скормить их сервису, который просто положит их в конец очереди. После этого проблемы с перегрузкой сервера пропадают сами собой: количество потоков всегда фиксированное, в случае пустующей очереди они спят, сожрать весь процессор они тоже не могут, потому что большую часть времени ждут ответов по сети. Здесь начинаются проблемы с уже немного другим характером: следить надо не за загруженностью сервера, а за тем, чтобы очередь не имела возможности бесконечно расти. Поэтому метод приемки сообщений должен возвращать 200, если размер очереди + переданные сообщения не превышают лимит и 503, если существует опасность вылезти за разумные пределы очереди.

Ответ 3



IIS будет убивать ваш поток-обработчик при ресайкле пула приложений (app pool). Просто потому, что ресайкл аппула реализован перезапуска рабочего процесса IIS. Это может происходить, в зависимости от настроек, - по расписанию, по превышению памяти, вообще когда угодно. Например, при настройках по умолчанию appool будет убит через 20 минут неактивности. Вместе с вашим фоновым потоком. Хуже того, в некоторых случаях IIS будет запускать два рабочих процесса одновременно. Например, если включён overlapping recycling. Или если остановка старого аппула заняла больше времени, чем ожидалось (а это точно произойдёт, если вы запустить там долгий не-background поток). Даже при таких простых действиях, как редактирование конфига, поведение вашего "сервиса" будет полностью непредсказуемым. Хостить долгоживущие потоки в IIS - это плохая идея. Для долгоживущих потоков есть Windows Service (с self-hosted WCF в нём). Или, в случае стороннего хостинга - его замена в виде всяких webjobs.

суббота, 7 марта 2020 г.

Можно ли в Visual Studio собирать проект на лету?

#visual_studio #aspnet_mvc #iis


При компиляции и запуске проекта ASP.NET MVC Core часть .cs файлов блокируется студией
и что б изменить код- надо "выключать сборку", изменять код, заново компилировать и
запускать изменённый проект, затрачивая время. 

Можно ли на лету после изменения .cs файла собрать проект и тут же увидеть в браузере
обновлённые данные, не перезапуская весь IIS ?
    


Ответы

Ответ 1



Можно, если использовать компьютер в качестве локального веб-сервера. Не путать с IIS Express, который открывает Visual Studio при запуске проекта. Следует заметить что компонент IIS включен как часть установки Windows как для сервера, так и для рабочих машин. Каждая версия OS Windows предлагает свою версию IIS: Windows 8 - IIS 8, Windows 7 - IIS 7/7.5 Чтобы установить его, необходимо выполнить следующие действия: Открыть панель управления Открыть "Программы" Открыть "Включение или отключение компонентов Windows". Выбрать Internet Information Services (Службы IIS) Убедитесь, что вы выбрали поддержку ASP.NET. Для этого раскройте узел Службы Интернета --> Компоненты разработки приложений --> ASP.NET (Internet Information Services --> World Wide Web Services --> Application Development Features --> ASP.NET) Если вы хотите использовать поддержку IIS в Visual Studio, которая позволяет вам создавать виртуальные каталоги IIS непосредственно в диалоговом окне New Web Site, вам нужно выбрать пункт «Совместимость управления IIS 6» в разделе «Средства управления веб-сайтом» (Web Management Tools --> IIS 6 Management Compatibility). Ok Убедитесь, что IIS активен: открыть localhost:80 в браузере. Ниже показана стандартная страница. Установить SQL Server и разрешить подключения Открыть Visual Studio с права администратора и создать виртуальный каталог для приложения: ПКМ по проекту --> Свойства --> Веб --> В разделе серверы выбрать "Локальный IIS" --> Нажать "Создать виртуальный каталог". Проект будет доступен по адресу указанному в графе URL-адрес проекта После написания кода собираем проект Ctrl+Shift+B и перезагружаем страницу в браузере. Для отладки Запускаем Visual Studio с правами администратора Жмем кнопку присоединиться (вверху на панельке, зеленая) Ставим галочку на "Показать процессы, запущенные всеми пользователями" Ищем процесс с названием "w3wp.exe" Жмем "Присоединиться"

среда, 4 марта 2020 г.

IIS, магическая ошибка 404.13 - Not Found

#python #windows #django #iis


Я использую IIS v10.0.14393.0 + Django, 

При загрузки файла (размер 200 мб.) на сайт отдает ошибку 404.13 (ошибка IIS не Django)
при этому если размер файла меньше чем некий лимит, то отдает 200.

В чем может быть проблема?

Если нужно, могу прикрепить web.config.
    


Ответы

Ответ 1



Поднимите лимиты размера запроса в конфиге: Для модуля requestFiltering - скорее всего он у вас срабатывает: И для httpRuntime: Через UI, на server / site / app:

вторник, 25 февраля 2020 г.

Visual Studio 2015, ASP.NET 5, Локальный сервер IIS

#aspnet_mvc #iis #visual_studio_2015


Есть проект написанный на ASP.NET 5.
Требуется запуск из Visual Studio 2015 в режиме отладки, но чтоб была возможность
подключения к нему по внешнему статическому IP.
Я так понимаю нужно использовать локальный сервер IIS.
Но как это настроить ?
    


Ответы

Ответ 1



Запустить студию с правами администратора Открыть свойства веб проекта в студии Перейти на закладу Web Сменить значение в комбобоксе Servers с IIS Express на Local IIS Нажать Create Virtual Directory Приложение будет доступно по Project Url, с подстановкой IP или внешнего имени машины вместо localhost. Запустить отладку можно по F5, или прицепившись у уже запущенному w3wp.exe через Debug → Attach To Process. Или можно просто вручную создать Application в IIS Manager, зайти на сайт, и точно так же прицепится отладчиком студии.

понедельник, 6 января 2020 г.

Как прочитать данные с сетевого диска либо по локальному пути MVC

#c_sharp #windows #aspnet_mvc #iis


Пишу маленький проект с подключением файла с сетевого диска, при публикации на локальном
ПК получаю исключение  


  System.IO.DirectoryNotFoundException: Не удалось найти часть пути


затем я решил в поле пути прописать явное подключение 

string path = "\\\\192.168.0.2\\delete\\test.dat


и снова получаю исключение: 


  System.UnauthorizedAccessException: Отказано в доступе по пути
  \192.168.0.2\delete\test.dat


И как бы ясно что система требует логин пароль, я на MSDN нашел вот такой пример: 
в web.config добавляем :

  
   
      
   



И всеравно получаю ошибку, в которой сказано что такого пользователя и пароля не
существует в системе, помогите пожалуйста решить проблему. Спасибо
    


Ответы

Ответ 1



Источник: en SO: How to provide user name and password when connecting to a network share Попробуйте так, у меня работает NetworkManager public class NetworkManager : IDisposable { private readonly string _networkName; public NetworkManager(string networkName) { _networkName = networkName; NetResource netResource = new NetResource { Scope = ResourceScope.GlobalNetwork, ResourceType = ResourceType.Any, DisplayType = ResourceDisplayType.Directory, RemoteName = networkName }; int result = WNetAddConnection2(netResource, "ВАШ ПАРОЛЬ", "ВАШ ЛОГИН", 0); if (result != 0) { throw new Win32Exception(result); } } ~NetworkManager() { Dispose(false); } public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } protected virtual void Dispose(bool disposing) { WNetCancelConnection2(_networkName, 0, true); } [DllImport("mpr.dll")] private static extern int WNetAddConnection2(NetResource netResource, string password, string username, int flags); [DllImport("mpr.dll")] private static extern int WNetCancelConnection2(string name, int flags, bool force); } [StructLayout(LayoutKind.Sequential)] public class NetResource { public ResourceScope Scope; public ResourceType ResourceType; public ResourceDisplayType DisplayType; public int Usage; public string LocalName; public string RemoteName; public string Comment; public string Provider; } public enum ResourceScope { Connected = 1, GlobalNetwork, Remembered, Recent, Context } public enum ResourceType { Any = 0, Disk = 1, Print = 2, Reserved = 8, } public enum ResourceDisplayType { Generic = 0x0, Domain = 0x01, Server = 0x02, Share = 0x03, File = 0x04, Group = 0x05, Network = 0x06, Root = 0x07, Shareadmin = 0x08, Directory = 0x09, Tree = 0x0a, Ndscontainer = 0x0b } Использование using (NetworkManager network = new NetworkManager(@"\\192.168.0.2")) { // ваш код с подключением }

суббота, 21 декабря 2019 г.

Процесс не может получить доступ к файлу (Исключение HRESULT: 0x80070020)

#iis #faq #iis_express


При попытке запустить сайт в IIS появляется окно с ошибкой: 


  Процесс не может получить доступ к файлу, так как этот файл занят
  другим процессом. (Исключение из HRESULT: 0x80070020)




Сайт развернут на 80 порту. Ранее такой ошибки не наблюдал. Около недели назад появлялась
эта ошибка, но перезапуск Visual Studio решил проблему и больше ошибка не появлялась.
Сейчас ошибка появилась вновь, но ни перезапуск  Visual Studio, ни перезагрузка компьютера
не решили проблему. Кто сталкивался с данной проблемой, подскажите, как решить? Нашел
пару статей по похожим ошибкам, но везде не то. 



Нашел вот эту статью: Ошибка 0x80070020 при использовании сайта Центра обновления
Windows или Центра обновления Майкрософт для установки обновлений

Обновил систему, перезагрузил компьютер, очистил мусор, скопившийся в системе, перезагрузил
компьютер - не решило проблемы. Да, понимаю, что ошибка в IIS, но на всякий случай
проверил. Антивируса у меня на компьютере нет.
    


Ответы

Ответ 1



Решение проблемы оказалось следующим: Запустить командную строку и написать в ней команду: netstat -aon | find ":80" в результате, в окне командной строки будет видно следующее: Необходимо найти процесс, который прослушивает необходимый нас порт. Здесь мы видим, что процесс 3544 прослушивает наш занятый 80 порт. Открываем диспетчер задач и ищем там наш процесс по идентификатору(ИД): Как видим - это программа Skype. Открываем Skype, и выполняем следующие действия: Инструменты -> Настройки... -> Дополнительно -> Соединение В появившемся окне будет несколько настроек, нас интересует «Для дополнительных входящих соединений следует использовать порты 80 и 443», поэтому убираем активную галочку: Для дополнительных входящих соединений следует использовать порты 80 и 443 Сохраняем изменения. Перезапускаем Skype, заходим в Диспетчер служб IIS и запускаем сайт, который во время попытки запуска валился с ошибкой. Подсказка для решения была найдена на MSDN: Ошибка 0x80070020 при запуске веб-сайта в IIS 7.0

пятница, 29 ноября 2019 г.

При первом заходе на сайт, который крутится на IIS, сайт очень долго открывается

#iis #windows_server_2012


При первом заходе на сайт, который крутится на IIS 8 на Windows Server 2012 r2, сайт
очень долго открывается. потом работает нормально, через некоторое время захожу - снова
долго открывается. С чего начать искать в чем проблема, или может кто-то подскажет
решение?.. Элементарные вещи, как ресурсы сервера, стабильность подключение по сети
проверил, все норм...
    


Ответы

Ответ 1



По умолчанию IIS останавливает неактивные сайты для сохранения ресурсов сервера, и на компьютерах разработчиков или на серверах по типу "все в одном" это - нормальное поведение. Если у вас выделенный сервер специально для сайтов - можно настроить чтобы сайт был доступен всегда. Для этого надо зайти в дополнительные параметры пула приложений и поменять следующие настройки (названия настроек привожу для русского IIS для Windows 8.1, другие версии могут немного отличаться - но принцип тот же): Режим запуска (startMode): AlwaysRunning Тайм-аут простоя (idleTimeout): 0 Скриншот: https://i.stack.imgur.com/okN53.png Если у вас статический сайт - этого достаточно. Но статический сайт и без этого тормозить не должен, поэтому я предполагаю что у вас веб-приложение. Чтобы веб-приложение быстро работало, оно должно запуститься и загрузить свои ресурсы ("прогреть кеши"). Это тоже можно сделать автоматически. Для этого надо установить модуль IIS под названием "Инициализация приложений" (Application Initialization), если он ранее не был установлен. Дальше надо зайти в дополнительные параметры вашего веб-приложения (или сайта, если оно развернуто в корне) и включить там Предварительная установка включена (preloadEnabled): True Да, перевод довольно корявый. Но какой есть. Скриншот: https://i.stack.imgur.com/piqK5.png Теперь осталось прописать один или несколько URL-адресов, по которым IIS будет сам делать запросы, пробуждая тем самым веб-приложение ото сна. Для этого надо зайти в редактор конфигурации веб-приложения, выбрать там раздел "system.webServer/applicationInitialization" и отредактировать коллекцию по умолчанию. Скриншот: https://i.stack.imgur.com/jms2L.png Эти настройки далее попадут в файл web.config. Если вы используете средства автоматического развертывания, то они могут перезатереть ваши настройки в этом файле. Тут есть два решения. Первое: необходимые адреса может прописать разработчик и сохранить вместе с остальным исходным кодом проекта. Второе: надо переключить уровень конфигурации в интерфейсе, чтобы ваши настройки попали в конфиг, лежащий в другом месте. Скриншот: https://i.stack.imgur.com/uThfr.png

Ответ 2



Может дело не в операционной системе и окружении, а в самом сайте? Судя по поведению ваш сайт медленно загружается именно в момент скачивания файлов, а далее браузер уже берет данные из кэша, поэтому все работает быстрее (через определенное время браузер снова запрашивает файлы из-за чего и возникают тормоза. Попробуйте выполнить аппаратную перезагрузку и посмотрите на waterfall в инструментах разработчика Chrome. Для аппаратной перезагрузки и очистки кэша - открываем инструменты разработчика, щелкаем правой кнопкой мыши на иконке обновления перед адресной строкой и выбираем соответствующий пункт. Вполне возможно, что на скорость влияют большие файлы шрифтов или изображений. Также при первой загрузке может идти долгий поиск DNS, но это уже надо смотреть по графику, сложно сказать навскидку. Также не помешает на сервере вести статистику (например, munin или любые другие средства, собирающие информацию о системе). Некоторые провайдеры увлекаются на хостинге/VDS срезанием ресурсов, так что может и из-за этого. Надо смотреть графики по процессору и времени отклика страницы. Если падают доступные процессорные ресурсы или увеличивается время отклика, то значит нужно изучать ситуацию на самом сервере.

Ответ 3



У меня была подобная проблема. НА VDS хостинге всего 1 гигабайт оперативки, и когда через RDP во время администрирования было открыто много окон, приложений, а выйдя с RDP я их забыл закрыть, оказалось что оперативной памяти не хватает и сайт очень тормозит. Решением было закрывать все лишние окна и приложения при выходе с RDP.

пятница, 5 июля 2019 г.

Редирект с HTTP на HTTPS в IIS 8.5

Установил Url Rewrite 2.0 и сделал по инструкции данный редирект. В веб конфиге получилось так:


Но возникает ошибка TOO MANY REDIRECTS


Ответ

Я обычно делаю так:

понедельник, 10 июня 2019 г.

IIS, магическая ошибка 404.13 - Not Found

Я использую IIS v10.0.14393.0 + Django,
При загрузки файла (размер 200 мб.) на сайт отдает ошибку 404.13 (ошибка IIS не Django) при этому если размер файла меньше чем некий лимит, то отдает 200.
В чем может быть проблема?
Если нужно, могу прикрепить web.config


Ответ

Поднимите лимиты размера запроса в конфиге:
Для модуля requestFiltering - скорее всего он у вас срабатывает:

И для httpRuntime:

Через UI, на server / site / app:

вторник, 4 июня 2019 г.

Долгие задачи в IIS сервер

Есть задача разработать сервис для рассылки почты, которым будут пользоваться остальные сервисы/приложения/сайты внутри компании. Планирую сделать WEB-сервис. Схема примерно такая:
есть паблик метод который принимает на вход что рассылать и кому. метод получает пачку задач. Метод порождает поток, который берет задачи и рассылает потихонечку. Сам метод продолжает ожидать новых задач.
Есть минимум 2 проблемы:
До этого я всегда размещал сервисы в IIS. Однако, при наших объемах расылки, мы теоретически можем получить задачу которая будет длится часы. Насколько я понимаю IIS может сам прерывать задачи, которые длятся долгое время. Как мне этого избежать? Сервис работает в контексте IIS. Думаю (но не уверен), что реально мой метод будет не порождать потоки, а резервировать существующие внутри пула потоков IIS. Итого мы можем в результате залочить все потоки и полностью заблокировать сервис.
Какой наиболее простой выход из этой ситуации? Возможно, мне стоит использовать SelfHosting WCF?


Ответ

Нет, проблем с прерыванием задач не будет. Просто потому что у вас задача в отдельном потоке - IIS прерывает только те задачи, которые он запускал сам.
Кстати, без отдельного потока он бы тоже не стал прибивать задачу - WCF служба неподвластна IIS, даже если использует его для активации.
Если вы создаете поток через new Thread - то это будет именно отдельный поток, не имеющий никакого отношения к пулу IIS. В других случаях - да, такая проблема присутствует (кстати, у WCF и IIS тоже общие пулы).
Способы "украсть" поток из общего пула:
delegate.BeginInvoke ThreadPool.QueueUserWorkItem new Task BackgroundWorker Просто синхронная работа в операции WCF
и еще куча более редких способов.
Способы щадящей работы с общим пулом потоков:
new Thread Использование асинхронных методов (они будут выполняться в общем пуле - но не будут занимать его надолго).

На самом деле, проблемы вы ищите немного не там. Дело в том, что долгие операции рано или поздно захочется сделать еще и возобновляемыми, чтобы можно было, к примеру, выключить сервер для установки обновлений или для переезда на другой сервер - а потом продолжить все то, что не успело выполниться.
Отдельную службу можно настроить, чтобы она запускалась автоматически. А сайт IIS - нет. Когда перед вами встанет такая задача - переход на SelfHosting WCF будет хорошим решением.

пятница, 24 мая 2019 г.

Можно ли в Visual Studio собирать проект на лету?

При компиляции и запуске проекта ASP.NET MVC Core часть .cs файлов блокируется студией и что б изменить код- надо "выключать сборку", изменять код, заново компилировать и запускать изменённый проект, затрачивая время.
Можно ли на лету после изменения .cs файла собрать проект и тут же увидеть в браузере обновлённые данные, не перезапуская весь IIS ?


Ответ

Можно, если использовать компьютер в качестве локального веб-сервера. Не путать с IIS Express, который открывает Visual Studio при запуске проекта.
Следует заметить что компонент IIS включен как часть установки Windows как для сервера, так и для рабочих машин. Каждая версия OS Windows предлагает свою версию IIS: Windows 8 - IIS 8, Windows 7 - IIS 7/7.5

Чтобы установить его, необходимо выполнить следующие действия:
Открыть панель управления Открыть "Программы" Открыть "Включение или отключение компонентов Windows". Выбрать Internet Information Services (Службы IIS) Убедитесь, что вы выбрали поддержку ASP.NET.

Для этого раскройте узел Службы Интернета --> Компоненты разработки приложений --> ASP.NET (Internet Information Services --> World Wide Web Services --> Application Development Features --> ASP.NET) Если вы хотите использовать поддержку IIS в Visual Studio, которая позволяет вам создавать виртуальные каталоги IIS непосредственно в диалоговом окне New Web Site, вам нужно выбрать пункт «Совместимость управления IIS 6» в разделе «Средства управления веб-сайтом» (Web Management Tools --> IIS 6 Management Compatibility).
Ok Убедитесь, что IIS активен: открыть localhost:80 в браузере. Ниже показана стандартная страница. Установить SQL Server и разрешить подключения Открыть Visual Studio с права администратора и создать виртуальный каталог для приложения: ПКМ по проекту --> Свойства --> Веб --> В разделе серверы выбрать "Локальный IIS" --> Нажать "Создать виртуальный каталог". Проект будет доступен по адресу указанному в графе URL-адрес проекта
После написания кода собираем проект Ctrl+Shift+B и перезагружаем страницу в браузере.

Для отладки
Запускаем Visual Studio с правами администратора Жмем кнопку присоединиться (вверху на панельке, зеленая) Ставим галочку на "Показать процессы, запущенные всеми пользователями" Ищем процесс с названием "w3wp.exe" Жмем "Присоединиться"

среда, 30 января 2019 г.

Процесс не может получить доступ к файлу (Исключение HRESULT: 0x80070020)

При попытке запустить сайт в IIS появляется окно с ошибкой:
Процесс не может получить доступ к файлу, так как этот файл занят другим процессом. (Исключение из HRESULT: 0x80070020)

Сайт развернут на 80 порту. Ранее такой ошибки не наблюдал. Около недели назад появлялась эта ошибка, но перезапуск Visual Studio решил проблему и больше ошибка не появлялась. Сейчас ошибка появилась вновь, но ни перезапуск Visual Studio, ни перезагрузка компьютера не решили проблему. Кто сталкивался с данной проблемой, подскажите, как решить? Нашел пару статей по похожим ошибкам, но везде не то.

Нашел вот эту статью: Ошибка 0x80070020 при использовании сайта Центра обновления Windows или Центра обновления Майкрософт для установки обновлений
Обновил систему, перезагрузил компьютер, очистил мусор, скопившийся в системе, перезагрузил компьютер - не решило проблемы. Да, понимаю, что ошибка в IIS, но на всякий случай проверил. Антивируса у меня на компьютере нет.


Ответ

Решение проблемы оказалось следующим:
Запустить командную строку и написать в ней команду:
netstat -aon | find ":80"
в результате, в окне командной строки будет видно следующее:

Необходимо найти процесс, который прослушивает необходимый нас порт. Здесь мы видим, что процесс 3544 прослушивает наш занятый 80 порт.
Открываем диспетчер задач и ищем там наш процесс по идентификатору(ИД):

Как видим - это программа Skype. Открываем Skype, и выполняем следующие действия:
Инструменты -> Настройки... -> Дополнительно -> Соединение
В появившемся окне будет несколько настроек, нас интересует «Для дополнительных входящих соединений следует использовать порты 80 и 443», поэтому убираем активную галочку:
Для дополнительных входящих соединений следует использовать порты 80 и 443
Сохраняем изменения. Перезапускаем Skype, заходим в Диспетчер служб IIS и запускаем сайт, который во время попытки запуска валился с ошибкой.
Подсказка для решения была найдена на MSDN: Ошибка 0x80070020 при запуске веб-сайта в IIS 7.0