Azure 没有看到 Index.cshtml
Azure does not see Index.cshtml
我正在尝试在 Azure 服务上发布我的 ASP.NET 核心应用程序。这有效,但是当我尝试使用应用程序功能时,我收到消息
Your App Service app is up and running.
此外,在我的 wwwroot
文件夹中我没有任何 .html
文件。我只有一个 Index.cshtml
文件,它位于我的应用程序的 Views/Home
文件夹中,所有其他文件是 .css
、.js
等
当我在调试模式下 运行 Visual Studio 中的应用程序时,立即在浏览器中打开从 Index.cshtml
生成的页面。但应用程序在 Azure 中发布后,就不会发生这种情况。
我怎样才能让 Azure 看到 Index.cshtml
?
我发现了问题所在。有两种类型的应用程序,如下图所示:Web 应用程序和 Web 应用程序 MVC。我使用了第二种类型的应用程序。当我选择第一个类型并发布应用程序时,Azure 立即找到了所需的index.html。我只需要选择 Web 应用程序。
但为什么它不适用于第二种类型的应用程序(Web Apllication MVC)?我还是不知道这个问题的答案。
您是否在您的网络包中找到 index.cshtml?如果你在最终的 web 包中得到 index.cshtml,你可能需要将 index.cshtml 文件类型添加到以下 in..
..YourAzureWebApp --> 应用程序设置 --> 默认文档
据我所知,默认路由将添加到 Startup.cs
文件的 Configure
方法中,如下所示:
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
我还创建了我的 .Net Core 2.0 MVC 应用程序来检查这个问题,它可以在本地端和我的 azure web 应用程序上按预期工作。
Moreover, in my wwwroot folder I don't have any .html files.
Web 应用程序和 Web 应用程序 MVC 下的视图将被编译成 {your-webapplication-assemblyname}.PrecompiledViews.dll
,您可以利用 ILSpy 检查您的 DLL。
对于您的问题,我建议您通过 KUDU 清除网络应用程序中的网络内容,或者修改发布设置并选择 删除目标位置的其他文件在“文件发布选项”下,然后将您的应用程序重新部署到 Azure Web App 以缩小此问题的范围。
我这边花了 2 美分,因为我只是坚持了一会儿。
问题是昨天我一直在尝试部署到 Ubunut/Ngnix,今天我决定尝试 Azure。
但是我忘记在我的启动中评论(禁用)以下行:
//for nginx server
app.UseForwardedHeaders(new ForwardedHeadersOptions
{
ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
});
我花了将近半天的时间才找到问题。
路由我也是这样放的
app.UseStatusCodePages();
app.UseAuthentication();
app.UseMvc(routes => {
routes.MapRoute(
name: "default",
template: "{controller=Pages}/{action=Index}");
});
现在看起来它可以在 Azure 上使用了:)
我正在尝试在 Azure 服务上发布我的 ASP.NET 核心应用程序。这有效,但是当我尝试使用应用程序功能时,我收到消息
Your App Service app is up and running.
此外,在我的 wwwroot
文件夹中我没有任何 .html
文件。我只有一个 Index.cshtml
文件,它位于我的应用程序的 Views/Home
文件夹中,所有其他文件是 .css
、.js
等
当我在调试模式下 运行 Visual Studio 中的应用程序时,立即在浏览器中打开从 Index.cshtml
生成的页面。但应用程序在 Azure 中发布后,就不会发生这种情况。
我怎样才能让 Azure 看到 Index.cshtml
?
我发现了问题所在。有两种类型的应用程序,如下图所示:Web 应用程序和 Web 应用程序 MVC。我使用了第二种类型的应用程序。当我选择第一个类型并发布应用程序时,Azure 立即找到了所需的index.html。我只需要选择 Web 应用程序。
但为什么它不适用于第二种类型的应用程序(Web Apllication MVC)?我还是不知道这个问题的答案。
您是否在您的网络包中找到 index.cshtml?如果你在最终的 web 包中得到 index.cshtml,你可能需要将 index.cshtml 文件类型添加到以下 in..
..YourAzureWebApp --> 应用程序设置 --> 默认文档
据我所知,默认路由将添加到 Startup.cs
文件的 Configure
方法中,如下所示:
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
我还创建了我的 .Net Core 2.0 MVC 应用程序来检查这个问题,它可以在本地端和我的 azure web 应用程序上按预期工作。
Moreover, in my wwwroot folder I don't have any .html files.
Web 应用程序和 Web 应用程序 MVC 下的视图将被编译成 {your-webapplication-assemblyname}.PrecompiledViews.dll
,您可以利用 ILSpy 检查您的 DLL。
对于您的问题,我建议您通过 KUDU 清除网络应用程序中的网络内容,或者修改发布设置并选择 删除目标位置的其他文件在“文件发布选项”下,然后将您的应用程序重新部署到 Azure Web App 以缩小此问题的范围。
我这边花了 2 美分,因为我只是坚持了一会儿。
问题是昨天我一直在尝试部署到 Ubunut/Ngnix,今天我决定尝试 Azure。
但是我忘记在我的启动中评论(禁用)以下行:
//for nginx server
app.UseForwardedHeaders(new ForwardedHeadersOptions
{
ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
});
我花了将近半天的时间才找到问题。
路由我也是这样放的
app.UseStatusCodePages();
app.UseAuthentication();
app.UseMvc(routes => {
routes.MapRoute(
name: "default",
template: "{controller=Pages}/{action=Index}");
});
现在看起来它可以在 Azure 上使用了:)