我正在尝试在Azure服务上发布我的ASP.NET核心应用程序。这有效,但当我尝试使用应用程序功能时,我收到消息
您的App Service应用已启动并正在运行。
此外,在我的wwwroot
文件夹中,我没有任何.html
个文件。我只有一个Index.cshtml
文件,该文件位于我的应用程序的Views/Home
- 文件夹中,所有其他文件都是.css
,.js
等。
当我在Visual Studio中以调试模式运行应用程序时,立即打开从Index.cshtml
生成的浏览器中的页面。但是,在Azure中发布应用程序后,这种情况不会发生。
如何让Azure看到Index.cshtml
?
答案 0 :(得分:1)
您是否在网络包中找到了index.cshtml?如果您在最终的Web包中获得index.cshtml,则可能需要将index.cshtml文件类型添加到以下内容中。
.. YourAzureWebApp - >应用程序设置 - >默认文件
答案 1 :(得分:1)
AFAIK,默认路由将添加到classpath
文件的Configure
方法中,如下所示:
Startup.cs
我还创建了我的.Net Core 2.0 MVC应用程序来检查这个问题,它可以在本地和我的Azure应用程序中按预期工作。
此外,在我的wwwroot文件夹中,我没有任何.html文件。
Web应用程序和Web应用程序下的视图MVC将被编译为app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
,您可以利用ILSpy来检查您的DLL。
对于您的问题,我建议您通过KUDU清除网络应用中的网络内容,或修改发布设置,然后选择文件发布选项下的删除目的地的其他文件,然后将您的应用程序重新部署到Azure Web App以缩小此问题。
答案 2 :(得分:0)
我发现了问题所在。有两种类型的应用程序,如下图所示:Web应用程序和Web应用程序MVC。我使用第二种类型的应用程序。当我选择第一个类型并发布应用程序时,Azure立即找到了所需的index.html。我只需选择Web应用程序。
答案 3 :(得分:0)
从我这边走了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上运行了:)