Ошибки и предупреждения, по-видимому, связанные с проблемами пула приложений в IIS после обновления инфраструктуры - PullRequest
0 голосов
/ 30 апреля 2018

Некоторые непредвиденные предупреждения и ошибки начали появляться в моей службе мыла после того, как я обновил .Net Framework 4.0 до 4.5.2 в Windows 7.

Все ошибки исчезли после того, как я удалил старый пул приложений Framework 2 из IIS. Я также удалил все старые пулы приложений, чтобы у меня был только один пул приложений для моего проекта.

После этого я не смог воспроизвести ошибку, добавив обратно пул приложений Framework 2.

Проблемы, с которыми я столкнулся и которые впоследствии были решены

[Выпуск 1: Предупреждение]

Следующая сборка зависит от версии .NET Платформа, которая выше целевой и может некорректно загружаться во время время выполнения, вызывающее сбой

Полная ошибка была

Severity    Code    Description Project File    Line    Suppression State
Warning     The following assembly has dependencies on a version of the .NET
Framework that is higher than the target and might not load correctly during
runtime causing a failure: SBD.Common, Version=2.0.0.1, Culture=neutral, 
PublicKeyToken=a3471ea16b9add4c. The dependencies are: mscorlib, 
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089; System, 
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089; 
System.ServiceModel, Version=4.0.0.0, Culture=neutral, 
PublicKeyToken=b77a5c561934e089; System.Data, Version=4.0.0.0, 
Culture=neutral, PublicKeyToken=b77a5c561934e089; System.Xml, 
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089; 
System.Core, Version=4.0.0.0, Culture=neutral, 
PublicKeyToken=b77a5c561934e089. You should either ensure that the dependent 
assembly is correct for the target framework, or ensure that the target 
framework you are addressing is that of the dependent assembly.

**

[Ошибка 2 выпуска]

CS1502 Наилучшее совпадение перегруженного метода для (mymethod) содержит недопустимые аргументы

В коде

[SoapHeader("CoreHeader")]
public bool QueueDeleteDesigns(int itemId, int[] designIDs)
{
   CheckCoreHeader();
   string s = string.Join(",", designIDs);
   // etc

Intellisense также показал

The type 'IQueryable' is defined in an assembly that is not referenced. You 
must add a reference to assembly 'System.Core, Version =4.0.0.0 

**

[Выпуск 3 Предупреждение]

предупреждение CS1684: ссылка на тип «System.Tuple`2» утверждает, что он определен в «c: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ mscorlib.dll», но не может быть найдено

Ответы [ 2 ]

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

Я потратил целый день на устранение этих 3 проблем, и мне неясно, какое именно было исправление, потому что после устранения проблем я не смог их воспроизвести.

Я думаю, что это было связано с очисткой пулов старых приложений в IIS.

0 голосов
/ 30 апреля 2018
  1. Вам, вероятно, не понадобится этот шаг, но только для полноты: Проверьте файл applicationhost.config - если вы добавили в него запись вручную, убедитесь, что она читает это для вашего сайта:

    <application path="/" applicationPool="Clr4IntegratedAppPool">

  2. Это, скорее всего, решит проблему: В вашем файле web.config убедитесь, что ваш тег компиляции имеет версию платформы и допустимый путь к временному каталогу, который доступен вашим группам пользователей IIS_IUSRS или IIS_WPG (подробнее о группах пользователей здесь - https://docs.microsoft.com/en-us/iis/get-started/planning-for-security/understanding-built-in-user-and-group-accounts-in-iis):

    <compilation debug="True" strict="False" explicit="True" targetFramework="4.0" tempDirectory="C:\inetpub\temp\">

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