Map*_*ory 7 asp.net iis asp.net-core
我以前使用asp.net mvc4并将我的解决方案目录指向我的IIS网站位置,每次更新我的代码时,我只需单击重新构建我的解决方案,然后使用w3wp的"附加到进程".
在asp.net核心;当我将我的网站发布到文件系统时,我可以使用带有无托管代码的iis运行我的网站.但是当我将我的iis网站指向我的网站解决方案代码时,它显示502错误.我以前安装的所有asp.net核心模块.
您不需要像我们以前所描述的那样在 IIS 中运行 .Net Core 来轻松调试等。
使用 .Net Core,您只需在项目根目录打开命令行并输入“dotnet run”
DotNet Run 使用环境变量来驱动其执行的操作。因此,如果您希望站点在特定 URL 或端口上运行,请键入:
SET ASPNETCORE_URLS=http://example.com
Run Code Online (Sandbox Code Playgroud)
或者,如果您只想让它在不同的端口上运行
SET ASPNETCORE_URLS=http://localhost:8080
Run Code Online (Sandbox Code Playgroud)
然后设置环境
SET ASPNETCORE_ENVIRONMENT=Development
Run Code Online (Sandbox Code Playgroud)
设置完所有环境变量后,您可以输入
dotnet run
Run Code Online (Sandbox Code Playgroud)
现在要对其进行调试,请附加到 cmd.exe,并在其标题中添加 dotnet run 。您将能够以这种方式调试您的代码。
现在,如果您使用的是 Visual Studio,您的项目中的“属性”下有一个名为“launchSettings.JSON”的文件。您可以在此处配置配置文件,我将默认配置文件设置为 Kestrel Development,然后设置为 Kestrel Production,最后将 IIS 设置为最后,这样我就不会在 IIS Express 中运行 F5。
我的 LaunchSettings.json 如下所示:
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:56545/",
"sslPort": 0
}
},
"profiles": {
"Kestrel Development": {
"executablePath": "dotnet run",
"commandName": "Project",
"commandLineArgs": "dotnet run",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development",
"ASPNETCORE_URLS": "http://localhost:8080"
}
},
"Kestrel Production": {
"commandLineArgs": "dotnet run",
"commandName": "Project",
"environmentVariables": {
"ASPNETCORE_URLS": "http://localhost:8080",
"ASPNETCORE_ENVIRONMENT": "Production"
},
"executablePath": "dotnet"
},
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
第一个配置文件是按 F5 时使用的内容。因此,当我按 F5 时,Visual Studio 会为我启动 dotnet run,并设置由 launchSettings.JSON 中我的个人资料的environmentVariables 部分指定的环境和 URL。
现在,因为我有多个配置文件,所以我会在运行按钮旁边看到一个下拉菜单,这样如果我想在本地以生产模式运行,我可以选择 Kestrel Production。
按照以下步骤操作即可实现您想要的目标。
在 launchSettings.json 中,添加一个名为iisunder 的属性iisSettings,如下所示:
"iis": {
"applicationUrl": "http://my.aspnetcoreapp.com"
}
Run Code Online (Sandbox Code Playgroud)在该部分下,添加一个设置为profiles的新配置文件。我正在打电话给我的。这将向“运行”下拉列表添加一个名为 的新选项。commandNameIISLocal IISLocal IIS
"Local IIS": {
"commandName": "IIS",
"launchBrowser": true,
"launchUrl": "http://my.aspnetcoreapp.com",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
Run Code Online (Sandbox Code Playgroud)在 IIS 中创建一个网站。将主机名设置为my.aspnetcoreapp.com. 还为此网站创建/使用应用程序池,并将 .NET CLR 版本设置为“无托管代码”。
在主机文件中添加环回条目(对于 Windows C:\Windows\System32\drivers\etc\hosts)
127.0.0.1 my.aspnetcoreapp.com
返回 Visual Studio,然后运行该应用程序。确保您从“运行”下拉列表中选择了“本地 IIS”配置文件。在显示“正在配置 IIS...”的简短加载消息后,这将在浏览器中的 URL 上启动应用程序。
您还可以通过指定 ULR(如代替)将应用程序托管在“默认网站”下。如果您这样做,将会创建一个名为 的新应用程序池。localhost/MyAspNetCoreAppmy.aspnetcoreapp.comMyAspNetCoreApp AppPool
我的媒体文章是关于这个的。
简单的答案:当您发布时,您调用一个启动该publish-iis工具的脚本(请参阅script参考资料中的部分project.json)。
在您的项目中,您有一个web.config类似以下内容的文件:
<aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" \n stdoutLogEnabled="false" stdoutLogFile=".\\logs\\stdout" forwardWindowsAuthToken="false"/\nRun Code Online (Sandbox Code Playgroud)\n\n如您所见,有占位符"%LAUNCHER_PATH%"和%LAUNCHER_ARGS%参数。记住这些。
现在打开您的project.json 文件,您将看到一个“脚本”部分,如下所示:
\n\n"scripts":\n{ \n "postpublish":"dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%"\n}\nRun Code Online (Sandbox Code Playgroud)\n\n它告诉 dotnet 在应用程序发布后运行publish-iis 工具。怎么运行的:
\n\n\n\npublish-iis 工具会转到发布应用程序的文件夹(不是您的项目文件夹)并检查它是否包含 web.config 文件。如果没有\xe2\x80\x99t,它将创建一个。如果是,它将检查您拥有哪种类型的应用程序(即它是否针对完整 CLR 还是 Core CLR,以及 \xe2\x80\x93 对于 Core CLR \xe2\x80\x93 无论它是可移植应用程序还是独立应用程序)以及将设置 processPath 和参数属性的值,同时删除 %LAUNCHER_PATH% 和 %LAUNCHER_ARGS% 占位符。
\n
| 归档时间: |
|
| 查看次数: |
5678 次 |
| 最近记录: |