gpt4 book ai didi

azure - ASP.NET Core 应用程序在发布到 Azure 后无法运行

转载 作者:行者123 更新时间:2023-12-04 20:34:06 25 4
gpt4 key购买 nike

我有一个 ASP.NET Core 应用程序,在本地运行良好。

但是,当我将网站发布(Web 部署)到 Azure 时,我收到403:您无权查看此目录或页面.

我在 Startup.cs 中定义了一个默认 Controller 和一个路由:

app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller}/{action}/{id?}",
defaults: new { controller = "Home", action = "Index" });
});

Web 部署到 Azure 后的文件夹结构如下所示:

|_ home
|_ site
|_ wwwroot (contains DLL's and files specified through 'publishOptions' in project.json)
|_ wwwroot (the contents of the 'wwwroot' folder I have in Visual Studio)
|_ Views (contains MVC views)
|_ refs (contains referenced DLLs, I think?)

知道我应该在 project.json 或 Kudu 门户中查找什么来找出问题所在吗?

我的project.json文件:

{
"title": "My Web App",
"version": "1.0.0-*",
"buildOptions": {
"debugType": "portable",
"emitEntryPoint": true,
"preserveCompilationContext": true,
"compile": {
"exclude": [ "bin/**", "obj/**", "node_modules/" ]
}
},
"publishOptions": {
"include": [ "wwwroot", "Views", "appsettings.json", "appsettings.*.json" ]
},
"scripts": {
"prepublish": [ "jspm install", "gulp build" ]
},
"dependencies": {
"Microsoft.ApplicationInsights.AspNetCore": "1.0.0",
"Microsoft.AspNetCore.Diagnostics": "1.0.0",
"Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore": "1.0.0",
"Microsoft.AspNetCore.Mvc": "1.0.0",
"Microsoft.AspNetCore.StaticFiles": "1.0.0",
"Microsoft.Extensions.Configuration.Json": "1.0.0",
"Microsoft.Extensions.Configuration.UserSecrets": "1.0.0",
"Microsoft.Extensions.Logging.Console": "1.0.0",
"Microsoft.Extensions.Logging.Debug": "1.0.0",
"Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0",
"System.IO.FileSystem": "4.0.1"
},
"frameworks": {
"netcoreapp1.0": {
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.0"
},
"Microsoft.AspNetCore.Server.Kestrel": "1.0.0"
},
"imports": "dnxcore50"
}
},
"commands": {
"web": "Microsoft.AspNet.Server.Kestrel --server.urls=http://*:8000/"
}
}

编辑:

首先,我缺少 Microsoft.AspNetCore.Server.IISIntegration NuGet 包。添加它后,我还在站点根目录中获得了一个 web.config 文件(我通过 project.json 包含了该文件)。

我还在 Startup.cs 中的 WebHostBuilder 中添加了 .UseIISIntegration():

public static void Main(string[] args)
{
new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseStartup<Startup>()
.UseIISIntegration() // This was missing
.Build()
.Run();
}

我现在可以在本地 IIS Express 上运行它(尽管我猜它是面向 Kestrel 的 IIS?),但是当发布到 Azure 时,我收到错误:HTTP 错误 502.5 - 进程失败

Azure 中的事件日志状态:无法使用命令行“%LAUNCHER_PATH%”%LAUNCHER_ARGS%'启动进程,ErrorCode = '0x80070002'。

根据文档,故障排除步骤为:

如果服务器在安装服务器托管 bundle 时无法访问 Internet,则当安装程序无法在线获取 Microsoft Visual C++ 2015 Redistributable (x64) 包时,将会出现此异常。您可以从 Microsoft 下载中心获取这些软件包的安装程序。

但不确定这如何适用于Azure

最佳答案

问题来自于 IIS 集成/配置不足。

我必须将以下内容添加到 project.json:

"tools": {
"Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final"
}

我还添加了一个用于 IIS 发布的 postPublish 脚本:

"scripts": {
"postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
}

我还添加了 Microsoft.AspNetCore.Server.IISIntegration NuGet 包:

"dependencies": {
"Microsoft.AspNetCore.Server.IISIntegration": "1.0.0"
}

这创建了一个 web.config 文件,我必须将其修改为:

<configuration>
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath=".\My.Web.App.dll" arguments="" forwardWindowsAuthToken="false" stdoutLogEnabled="true" stdoutLogFile="\\?\%home%\LogFiles\stdout" />
</system.webServer>
</configuration>

最后,我将 UseIISIntegration 添加到我的 WebHostBuilder 中:

public static void Main(string[] args)
{
new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseStartup<Startup>()
.UseIISIntegration() // This was missing
.Build()
.Run();
}

来自 Visual Studio 的标准发布(Web 部署)和网站在 Azure 上启动得很好(尽管在我的例子中,我还必须为某些内容添加预发布脚本) Gulp 任务)。

关于azure - ASP.NET Core 应用程序在发布到 Azure 后无法运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39209335/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com