如何将针对 net452 项目的 ASP.NET Core 部署为 IIS 中网站的 IIS 应用程序
Posted
技术标签:
【中文标题】如何将针对 net452 项目的 ASP.NET Core 部署为 IIS 中网站的 IIS 应用程序【英文标题】:How to deploy an ASP.NET Core targetting net452 project as an IIS application of a Web Site in IIS 【发布时间】:2016-12-21 16:25:29 【问题描述】:我想将针对 net452 的 ASP.NET Core RTM Web 应用程序部署到 IIS 应用程序而不是 IIS 网站。我正在使用 IIS 10(Windows 10)
我之前有一个ASP.net 5 RC1
项目,并使用here 和here 描述的方法将其部署到IIS 中的IIS 应用程序文件夹中
我需要将网站作为我的网站下的应用程序运行,例如http://locahost/mysite 在 IIS 中,我在 RC1 中通过将以下代码行添加到我的 Startup.cs
中的 Configure
方法中实现了这一点
app.Map("/MyApplication", (app1) => this.Configure1(app1, env, loggerFactory));
在我将项目转换为 ASP.net 核心后,它可以在 Visual Studio 中成功运行,但是当我访问 URL http://localhost/mysite
时,上面的代码现在只是在 IIS 中给我一个空白页
我已确保我的代码中包含我需要的所有内容,从 ASP.NET documentation website 了解如何将 ASP.NET Core 部署到 IIS,包括安装安装程序和执行 iireset
。
但是在完成设置所需的一切之后,我得到了相同的空白屏幕。
现在我被卡住了。
然后我启用了日志记录。当我启用登录我的web.config
时,当我尝试访问我的网站时会得到以下信息
info: Microsoft.Extensions.DependencyInjection.DataProtectionServices[0]
User profile not available. Using 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\4.0.30319.0\AutoGenKeys\S<removed>\DataProtection' as key repository and Windows DPAPI to encrypt keys at rest.
Hosting environment: Production
Content root path: C:\mydeployfolder
Now listening on: http://localhost:8305/mysite
Application started. Press Ctrl+C to shut down.
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
Request starting HTTP/1.1 GET http://localhost/mysite
从上面你可以看到它捡起了我在浏览器中输入的url,并创建了一个日志条目,但是浏览器中的最终结果仍然是一个空白页面。
然后我从一开始就读取日志,由于某种原因,它正在侦听端口 8308 而不是端口 80。所以我在浏览器中输入http://localhost:8305/mysite
,然后在日志中得到以下内容
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
Request starting HTTP/1.1 GET http://localhost:8305/mars
fail: Microsoft.AspNetCore.Server.IISIntegration.IISMiddleware[0]
'MS-ASPNETCORE-TOKEN' does not match the expected pairing token '<removed>', request rejected.
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]
Request finished in 0.9426ms 400
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
Request starting HTTP/1.1 GET http://localhost:8305/favicon.ico
fail: Microsoft.AspNetCore.Server.IISIntegration.IISMiddleware[0]
'MS-ASPNETCORE-TOKEN' does not match the expected pairing token '52561883-06a6-46ce-b8dc-5daadb6e83c0', request rejected.
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]
Request finished in 0.7004ms 400
仍然是一个空白页。
我只想托管以 IIS 为目标并且之前在 ASP.NET 5 RC 中完成的 Web 应用程序。我在 ASP.NET Core 中做错了什么还是不可能了?
【问题讨论】:
launchSettings.json
中的 applicationUrl
是什么?
这是我从 Visual Studio 调试时的开发 URL localhost:49753launchUrl 是 localhost:5000
您是否检查过您的代码是否可以作为站点使用?
代码在调试和从 Visual Studio 运行的发布模式下工作。发布时什么都不做
【参考方案1】:
app.Map("/MyApplication", (app1) => this.Configure1(app1, env, loggerFactory));
ASP.NET Core RC2 或 RTM 不再需要解决方法,而 RC1 中需要解决方法
【讨论】:
以上是关于如何将针对 net452 项目的 ASP.NET Core 部署为 IIS 中网站的 IIS 应用程序的主要内容,如果未能解决你的问题,请参考以下文章
ASP.Net Core MVC 如何针对强类型模型发布未知数量的字段
在 VS 2017 中针对完整的 .net 框架 asp.net 核心项目运行 XUnit 2.2.0 单元测试时出现 System.BadImageFormatException
ASP.NET Core中的缓存[1]:如何在一个ASP.NET Core应用中使用缓存
将 DLL 引用添加到 C# asp.net 项目后如何调用函数