如何在IIS上运行ASP.NET MVC6而不发布应用程序

zor*_*pro 17 asp.net-core

我试图找到一种方法在IIS上运行MVC6应用程序,但没有实际进行发布.我不确定这是否可能,如果不可能,将来是否可能?

我想在以前的版本中有类似的行为,我可以轻松地调试我的代码并在IIS下运行应用程序时进行更改.

Sha*_*tin 16

从你原来的问题(强调添加):

我试图找到一种方法在IIS上运行MVC6应用程序,但没有实际进行发布.

从你的评论到tugberk(重点补充):

现在,每当我进行更改时,我都需要调用该dnu发布命令,以便在IIS上查看我的更改.我只想通过重建来看他们.

答案和原因

你需要发布.至少有两个原因:

  • IIS需要构建输出和
  • IIS需要一个web.config文件.

IIS可能还需要其他一些东西,我不知道.所以,你需要发布.这不是什么大问题:在一次性设置之后,发布并不需要比重建更长的时间.

你为什么需要发表?

在Visual Studio 2015中,如果构建ASP.NET 5 Web应用程序,则解决方案目录下将不会有构建输出,并且IIS需要构建输出.默认情况下,Roslyn仅运行代码分析而不会发出构建输出.

您可以更改该默认值,以便Roslyn确实发出构建输出,但这不会产生IIS所需的web.config文件.通过转到View> Project Properties> Build和检查"生产上生成输出",罗斯林将发出输出到artifacts目录.例如:

artifacts/bin/MyWebApp/Debug/MyWebApp.1.0.0.nupkg
artifacts/bin/MyWebApp/Debug/MyWebApp.1.0.0.symbols.nupkg
artifacts/bin/MyWebApp/Debug/app/project.json
artifacts/bin/MyWebApp/Debug/dnx451/MyWebApp.dll
artifacts/bin/MyWebApp/Debug/dnx451/MyWebApp.pdb
artifacts/bin/MyWebApp/Debug/dnx451/MyWebApp.xml
artifacts/bin/MyWebApp/Debug/dnxcore50/MyWebApp.dll
artifacts/bin/MyWebApp/Debug/dnxcore50/MyWebApp.pdb
artifacts/bin/MyWebApp/Debug/dnxcore50/MyWebApp.xml
Run Code Online (Sandbox Code Playgroud)

如果你将IIS指向artifacts目录,你现在就会遇到既没有a wwwroot也没有a的问题web.config.

因此,您需要发布(或制定一些其他复杂的解决方案)以便IIS与ASP.NET 5一起使用.如果要从Visual Studio发布到本地IIS网站,则需要进行一次性设置.在一次性设置之后,您可以对代码进行更改并通过两次单击发布.这是一次性设置:

  • 右键单击该项目.
  • 选择发布.
  • 选择文件系统并添加配置文件名称(例如inetpub).
  • 将目标位置更改为C:\ inetpub\MyWebApp
  • 在设置中,选择适当的设置.例如
    • 配置:调试
    • 目标DNX版本: dnx-clr-win-x64.1.0.0-beta4
  • 单击"发布".

发布完成后,C:\inetpub\MyWebApp\wwwroot将IIS指向,您将能够浏览到该网站.此外,您现在可以更改代码,通过两次单击发布,并刷新IIS站点以查看更改.

一些陷阱

  • 如果确实选择发布到inetpub,请确保以管理员身份运行Visual Studio,以免收到权限不足错误.

  • 如果您接受默认发布位置(而不是如上所示使用inetpub),请注意路径太长的错误(即> 260个字符.)

最后的想法

为什么不在开发期间使用Visual Studio和Debug> Start without debugging.使用Roslyn和Visual Studio 2015,您可以通过刷新Web浏览器对代码进行更改并查看这些更改.不需要重建.这是一个更好的工作流程.

  • 这非常有帮助.我现在明白了很多. (3认同)

tug*_*erk 6

这是可能的.在项目的根目录下(project.json目录),运行以下命令:

dnu publish --runtime active --out bin/artifacts
Run Code Online (Sandbox Code Playgroud)

发布完成后,您在bin/artifacts文件夹下有一些东西.将IIS应用程序池指向bin/artifacts/wwwroot我们刚刚创建的文件夹,它应该可以工作.请记住,您至少需要.NET 4.5.1.

  • 我确实尝试过,但在我看来并不是我想要的.现在,每当我进行更改时,我都需要调用`dnu publish`命令以查看我在IIS上的更改.我只想通过`rebuild`看到它们. (6认同)