Включение ASP.Net 4.0

Потребовалось развернуть внутренний узел с поддержкой asp.net 4.0. Выбрал подходящий сервер c установленной Windows Server 2008 R2, установил роль IIS с необходимыми компонентами, добавил папку с содержимым узла, настроил доступ пользователей, создал и настроил узел с собственным пулом приложений, где выбрал Asp.net v4.0:

Пул приложений узла local с Asp.Net v4.0
Пул приложений узла local

При запуске проверочной страницы Default.aspx увидел сообщение об ошибке:
Ошибка страницы Default.aspx
Ошибка страницы Default.aspx

На первый взгляд, причина была неясна, потому что страница доступна для изменения и имеет простой текст:
************************ Default.aspx *************************
<%@ Page Language=”C#” AutoEventWireup=”true” CodeFile=”Default.aspx.cs” Inherits=”DefaultPage” %>

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”&gt;

<html xmlns=”http://www.w3.org/1999/xhtml”&gt;
<head runat=”server”>
<title></title>
</head>
<body>
<form id=”form1″ runat=”server”>
<div>
<asp:Label ID=”Label2″ runat=”server” Text=”Label”>ASP.Net is working!</asp:Label>
<br />
<asp:Label ID=”Label1″ runat=”server” Text=”Label”>Current user: </asp:Label>
</div>
</form>
</body>
</html>

************************ End of Default.aspx *************************

************************ Default.aspx.cs *************************
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class DefaultPage : System.Web.UI.Page
{
protected void Page_Load( object sender, EventArgs e )
{
Label1.Text += System.Security.Principal.WindowsIdentity.GetCurrent().Name;
}
}

************************ End of Default.aspx.cs *************************
Следующим шагом проверяем работоспособность узла в принципе – создаем и успешно открываем <html> страницу:
************************ Test.html *************************
<html>
<body>
Тестовая страница.
</body>
</html>
************************ End of Test.html *************************
Пробежавшись по настройкам узла, функция .Net Compilation выдала ошибку:

Ошибка функции .Net Compilation
Ошибка функции .Net Compilation

Таким образом, обнаружена явная пробема с настройками Asp.Net. При этому узел по умолчанию на этом же сервере успешно запускается. Т.к. в его пуле приложений указан Asp.Net v2.0, то проблема в настройке именно версии v4.0.
Пул приложение узла по умолчанию с Asp.Net v2.0
Пул приложение узла по умолчанию

Чтобы подтвердить свою догадку, запускаем Internet Information Services (IIS) Manager, выбираем имя сервера и открываем фукнцию ISAPI and CGI Restriction.
Расширения для Asp.Net v2.0
Расширения для Asp.Net v2.0

Поскольку в перечне разрешен запуск только Asp.Net v2.0, необходимо воспользоваться утилитой aspreg_iis. Запускаем командную строку с правами администратора, устанавливаем Asp.Net v4.0:

c:\Windows\Microsoft.NET\Framework64\v4.0.30319>aspnet_regiis.exe -ir
Start installing ASP.NET (4.0.30319) without changing existing web applications to use this version of ASP.Net.
.....
Finished installing ASP.NET (4.0.30319) without changing existing web applications to use this version of ASP.Net.

Однако, это еще не все. Обновив содержимое окна функции ISAPI and CGI Restriction, видим, что расширение установлено, но не разрешено.
Запрещенные расширения для Asp.Net v4.0
Запрещенные расширения для Asp.Net v4.0

В правой части видим пункт Allow, который поочердно вызываем для 32- и 64-разрядных версий.
Расширения для Asp.Net v4.0
Расширения для Asp.Net v4.0

Теперь, в браузере появилось правильное содержимое страницы Default.aspx.
Содержимое страницы Default.aspx
Содержимое страницы Default.aspx


1. Все используемые IP-адреса, имена серверов, компьютеров, доменов, пользователей, являются фиктивными и используются исключительно в демонстрационных целях.
2. Информация приводится «AS IS».

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.