Нераспознанный элемент «компиляторы» со старым приложением asp.net на IIS 10.0 - PullRequest
0 голосов
/ 24 апреля 2018

Я надеюсь, что кто-нибудь сможет помочь нам с проблемой IIS / ASP.NET, которая у меня возникла.Мне было поручено перевести веб-сайт ASP.NET с IIS 6 на 32-разрядном сервере Windows 2003 на IIS 10 на 64-разрядном сервере Windows 2016.Я установил IIS и .NET 3.5 Framework, который включает в себя .NET 2.0 и 3.0, используя PowerShell со следующими функциями

$featureList = @('Web-Server','Web-CertProvider','Web-IP-Security','Web-Windows-Auth','Web-Asp-Net', 'NET-Framework-Features')
Install-WindowsFeature -Name $installFeatures -IncludeManagementTools -Source 'D:\sources\sxs' -Restart

Затем создал мой пул приложений и сайт следующим образом

New-WebAppPool -Name 'MyApp_AppPool'
Get-Item -Path 'IIS:\AppPools\MyApp_AppPool' | Set-ItemProperty -Name managedRuntimeVersion -Value 'v2.0'
New-Website -Name MyApp -ApplicationPool MyApp_AppPool -HostHeader myapp.domain.ca -IPAddress * -PhysicalPath 'E:\inetpub\wwwroot\MyApp' -Port 80

Кажется, что сайт загружает страницу входа, однако в IIS Manager, если я захожу в .NET Compilation, я получаю следующее сообщение об ошибке.Произошла ошибка при выполнении этой операции.

Details:
Filename: \\?\E:\inetpub\wwwroot\PEIWeb\web.config
Line number: 25
Error: Unrecognized element ‘compilers’

Вот эксперт по файлу web.config

    <compilation defaultLanguage="vb" debug="true">
        <compilers>
            <compiler language="vb" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" extension=".VB" compilerOptions="/define:Debug=True /define:Trace=True /imports:Microsoft.VisualBasic,System,System.Collections,System.Configuration,System.Data,System.Drawing,System.Web,System.Web.UI,System.Web.UI.HtmlControls,System.Web.UI.WebControls" />
        </compilers>
        <assemblies>
            <add assembly="Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
            <add assembly="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
            <add assembly="System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        </assemblies>
    </compilation>

Я протестировал пул приложений с установленным режимом управляемого конвейераИнтегрированные и классические, а также имеют тестовую настройку Включить 32-битные приложения в True, но я все еще получаю ту же ошибку.

Я читаю в Интернете, что возможно получить этот тип ошибки, если IIS установлен перед установкой.NET 3.5 Framework, поэтому я удалил как с помощью диспетчера серверов, так и с установленным .NET 3.5 Framework, а также перезагрузил и установил IIS, но я все еще получаю ту же ошибку.

Я также попытался запустить aspnet_regiis.exe -iиз двух следующих папок, но снова я все еще получил ту же ошибку.

C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 C: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727

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

Спасибо

1 Ответ

0 голосов
/ 02 мая 2018

Поэтому я еще немного покопался и, наконец, выяснил проблему.

Согласно Microsoft, элемент компилятора в элементе компиляции устарел в .NET Framework 2.0, но все еще поддерживается.В итоге я помещаю компиляторы и элементы компилятора в элемент system.codedom

https://msdn.microsoft.com/en-ca/library/5tc5kc3e(v=vs.80).aspx https://msdn.microsoft.com/en-ca/library/e4hwk57e(v=vs.80).aspx

Так что теперь вместо этого

<configuration>
    <system.web>
        <compilation defaultLanguage="vb" debug="true">
            <compilers>
                <compiler language="vb" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" extension=".VB" compilerOptions="/define:Debug=True /define:Trace=True /imports:Microsoft.VisualBasic,System,System.Collections,System.Configuration,System.Data,System.Drawing,System.Web,System.Web.UI,System.Web.UI.HtmlControls,System.Web.UI.WebControls" />
            </compilers>
            <assemblies>
                <add assembly="Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
                <add assembly="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
                <add assembly="System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
            </assemblies>
        </compilation>
    </system.web>
</configuration>

У меня есть

<configuration>
    <system.web>
        <compilation defaultLanguage="vb" debug="true">
            <assemblies>
                <add assembly="Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
                <add assembly="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
                <add assembly="System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
            </assemblies>   
        </compilation>

    <system.codedom>
        <compilers>
            <compiler
                language="vb" 
                extension=".vb"
                type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"
                compilerOptions="/define:Debug=True /define:Trace=True /imports:Microsoft.VisualBasic,System,System.Collections,System.Configuration,System.Data,System.Drawing,System.Web,System.Web.UI,System.Web.UI.HtmlControls,System.Web.UI.WebControls"
            />
        </compilers>
   </system.codedom>
</configuration>

И теперь все работает.Кажется, что хотя исходный файл web.config использовал устаревший синтаксис, он все же был принят обратно в IIS 6 и выглядит так, как будто он больше не принимается в IIS 10.

В любом случае, надеюсь, это поможет кому-то другому.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...