Проблема «Microsoft.AspNet.Server.Kestrel» при размещении в IIS

У меня есть проект веб-API ASP.NET Core MVC 6, который при размещении в IIS дает следующую ошибку:

Error: Unable to load application or execute command     'Microsoft.AspNet.Server.Kestrel'. Available commands: web, ef.
System.IO.FileNotFoundException: The system cannot find the file     specified.     (Exception from HRESULT: 0x80070002)
   at System.Reflection.RuntimeAssembly.nLoadFile(String path, Evidence evidence)
   at System.Reflection.Assembly.LoadFile(String path)
   at Microsoft.Dnx.Runtime.Loader.LoadContext.LoadFile(String assemblyPath)
   at Microsoft.Dnx.Runtime.Loader.PackageAssemblyLoader.Load(AssemblyName assemblyName, IAssemblyLoadContext loadContext)
   at Microsoft.Dnx.Runtime.Loader.PackageAssemblyLoader.Load(AssemblyName assemblyName)
   at Microsoft.Dnx.Host.LoaderContainer.Load(AssemblyName assemblyName)
   at Microsoft.Dnx.Host.DefaultLoadContext.LoadAssembly(AssemblyName assemblyName)
   at Microsoft.Dnx.Runtime.Loader.AssemblyLoaderCache.GetOrAdd(AssemblyName name, Func`2 factory)
   at Microsoft.Dnx.Runtime.Loader.LoadContext.LoadAssemblyImpl(AssemblyName assemblyName)
   at Microsoft.Dnx.Runtime.Loader.LoadContext.ResolveAssembly(Object sender, ResolveEventArgs args)
   at System.AppDomain.OnAssemblyResolveEvent(RuntimeAssembly assembly, String assemblyFullName)

Содержимое проекта.json:

{
  "version": "1.0.0-*",
  "compilationOptions": {
    "emitEntryPoint": true
  },

  "dependencies": {
    "EntityFramework.Commands": "7.0.0-rc1-final",
    "EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final",
    "EntityFramework.MicrosoftSqlServer.Design": "7.0.0-rc1-final",
    "Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final",
    "Microsoft.AspNet.Mvc": "6.0.0-rc1-final",
    "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final",
    "Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final",
    "Microsoft.Extensions.Configuration.FileProviderExtensions": "1.0.0-rc1-final",
    "Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final",
    "Microsoft.Extensions.Logging": "1.0.0-rc1-final",
    "Microsoft.Extensions.Logging.Console": "1.0.0-rc1-final",
    "Microsoft.Extensions.Logging.Debug": "1.0.0-rc1-final"
  },

  "commands": {
    "web": "Microsoft.AspNet.Server.Kestrel",
    "ef": "EntityFramework.Commands"
  },

  "frameworks": {
    "dnx451": {
      "frameworkAssemblies": {
        "System.Data.Entity": "4.0.0.0"
      }
    },
    "dnxcore50": { }
  },

  "exclude": [
    "wwwroot",
    "node_modules"
  ],
  "publishExclude": [
    "**.user",
    "**.vspscc"
  ]
}

Обратите внимание, я пытался удалить файл global.json, а также запускал команды dnu list, dnu restore, dnu build. Все еще получаю ту же ошибку.

Заранее спасибо.


person Nands    schedule 19.07.2016    source источник
comment
Как выглядит ваш файл project.json?   -  person Ted Nyberg    schedule 19.07.2016
comment
@TedNyberg: обновил вопрос.   -  person Nands    schedule 19.07.2016
comment
Кажется, сегодня все используют RC1 — вам следует перейти на RTM! Также почему вы используете Kestrel при размещении в IIS?   -  person DavidG    schedule 19.07.2016
comment
DNX, а также ASP.NET 5 (RC1) мертвы. Теперь вы должны удалить все эти биты и перезапустить с dot.net.   -  person Lex Li    schedule 19.07.2016
comment
@DavidG: Потому что есть только два готовых способа размещения приложений ASP.NET Core: WebListener или Kestrel. WebListener не работает на Linux и Mac, поэтому логичным выбором будет Kestrel. Даже если вы размещаете ASP.NET Core в IIS, вы по-прежнему используете kestrel для приложения ASP.NET Core. IIS просто настроен как обратный прокси-сервер, поэтому вам нужен основной модуль ASP.NET для IIS.   -  person Tseng    schedule 19.07.2016
comment
@Tseng Так и есть! Мне действительно нужно запустить настоящий проект в ядре...   -  person DavidG    schedule 19.07.2016


Ответы (1)


Спасибо всем!! :) Я перешел с RC1 на RTM и успешно разместил API в IIS! Использованы следующие ссылки: docs.asp.net/en/latest/tutorials/first-web-api.html docs.asp.net/en/latest/publishing/iis.html

@DavidG: Если бы вы сказали «ответил» вместо «комментарий», я бы отметил это как ответ. В любом случае спасибо!

person Nands    schedule 20.07.2016