【问题标题】:Publishing MVC 6 site with Visual Studio 2015 CTP 6 to IIS使用 Visual Studio 2015 CTP 6 将 MVC 6 站点发布到 IIS
【发布时间】:2015-03-06 01:35:53
【问题描述】:

我正在尝试将一个站点发布到我正在使用 MVC6 (beta 3) 和 Visual Studio 2015 (CTP 6) 开发的 IIS。我已将发布设置为针对 x64 版本的 KRE。发布一切顺利,没有报告任何错误,但我根本无法让网站运行。

第一个错误是找不到project.json,但我通过在添加到web.config 文件夹中的kre-app-base 中添加value 键来解决这个问题,所以内容是:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <appSettings>
    <add key="kpm-package-path" value="..\approot\packages" />
    <add key="bootstrapper-version" value="1.0.0-beta3" />
    <add key="runtime-path" value="..\approot\packages" />
    <add key="kre-version" value="1.0.0-beta3" />
    <add key="kre-clr" value="clr" />
    <add key="kre-app-base" value="..\approot\packages\ElectricFreedom.WebUI\1.0.0\root" />
  </appSettings>
</configuration>

然后我得到另一个错误:

在错误的页脚中,它指出它正在使用Microsoft.AspNet.Loader.IIS 版本“beta2”!当项目全部设置为使用“beta3”时,为什么要这样做?

我已经为我的项目检查了project.json,并且所有依赖项都列为“beta3”版本,但是除了“beta3”版本之外,发布仍在复制许多“beta2”版本。例如,查看Microsoft.AspNet.Loader.IIS 的目录会显示两个子目录,一个用于“beta2”,另一个用于“beta3”。如果我删除“beta2”目录,那么我会完全收到另一个错误:

如您所见,此错误表明它使用的是“beta3”版本的Microsoft.AspNet.Loader.IIS,但它现在抱怨的是依赖注入。

所有这些在带有 MVC 6(beta 2)的 Visual Studio 2015 CTP5 中运行良好。我唯一要做的就是将value 键添加到kre-app-base,因为出于某种原因,发布未能做到这一点。该站点在 IIS Express 中调试时也可以正常工作,并且在执行此操作时我没有收到上面报告的任何错误。

是否有任何配置文件或设置可能导致这些错误发生?我错过了什么明显的东西吗?

谢谢,

【问题讨论】:

  • 我对它进行了测试,发现它在 CTP6 中对我有用,就像在 CTP5 中一样。只需确保您已将 wwwroot 指向应用程序的根目录即可。
  • 指向wwwroot。当我使用 CTP5 时它工作正常,但同一个项目不再适用于 CTP6。我只能假设某些设置在版本之间发生了变化,这导致我的项目失败。麻烦在于找到发生了变化的地方并确保我的项目具有新设置...

标签: iis-8 asp.net-core visual-studio-2015 asp.net-core-mvc


【解决方案1】:

在发布过程中创建的一些临时文件似乎没有在版本之间被删除。它们位于%temp%\AspNetPublish\[ProjectName],删除该文件夹消除了我看到的错误,因为它清除了所有不应该发布且必须与新版本冲突的旧 DLL 文件。

【讨论】:

    【解决方案2】:

    我可以通过在 CTP6 中打开 CTP5 项目来重现它。我清楚地看到了某些程序集的问题。

    我做了以下事情。

    1. 在 Project.json 中,将依赖项中的 beta2 替换为 beta3。

    2. 一旦您执行第 1 步,它会给您提供与迁移相关的问题,其背后的原因是 AccountController 中某些方法的命名空间和返回类型发生了一些变化。如果您在发布后删除迁移目录和 AccountController,它将成功呈现 home/index。

    【讨论】:

    • 是的,我已经完成了升级项目的这些步骤,一切正常。它也通过 IIS Express 运行良好。问题是在发布它时,beta2 的临时目录中留下了一些文件,这些文件在重新发布时没有被删除。正如我的回答中提到的,我通过删除所有临时文件来解决它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多