【问题标题】:.Net Core 2.0 The view 'Index' was not found.Net Core 2.0 未找到视图“索引”
【发布时间】:2018-09-04 03:20:42
【问题描述】:

我将 .net core 2.0 应用程序部署到 IIS,但出现以下错误。

InvalidOperationException:未找到视图“索引”。搜索了以下位置:/Views/Home/Index.cshtml /Views/Shared/Index.cshtml

这只是我用来测试 Web 部署的全新默认 .net 核心 Web 模板。我已经尝试了下面的代码,但这也不起作用。

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

有没有我遗漏的步骤

堆栈跟踪:

消息 InvalidOperationException:未找到视图“索引”。搜索了以下位置: /Views/Home/Index.cshtml /Views/Shared/Index.cshtml Microsoft.AspNetCore.Mvc.ViewEngines.ViewEngineResult.EnsureSuccessful(IEnumerable originalLocations)

InvalidOperationException: The view 'Index' was not found. The following locations were searched: /Views/Home/Index.cshtml /Views/Shared/Index.cshtml
    Microsoft.AspNetCore.Mvc.ViewEngines.ViewEngineResult.EnsureSuccessful(IEnumerable<string> originalLocations)

    Microsoft.AspNetCore.Mvc.ViewResult+<ExecuteResultAsync>d__26.MoveNext()

    System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

    System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

    Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker+<InvokeResultAsync>d__19.MoveNext()

    System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

    System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

    Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker+<InvokeNextResultFilterAsync>d__24.MoveNext()

    System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

    Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResultExecutedContext context)

    Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)

    Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker+<InvokeNextResourceFilter>d__22.MoveNext()

    System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

    Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResourceExecutedContext context)

    Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)

    Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker+<InvokeFilterPipelineAsync>d__17.MoveNext()

    System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

    System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

    Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker+<InvokeAsync>d__15.MoveNext()

    System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

    System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

    Microsoft.AspNetCore.Builder.RouterMiddleware+<Invoke>d__4.MoveNext()

    System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

    System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

    Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware+<Invoke>d__7.MoveNext()


【问题讨论】:

  • Index.cshtml 在哪里?
  • 它位于主文件夹中。 .Net 核心也有一个 www 文件夹。我不确定视觉工作室是否应该在那里复制文件?它与创建新的 .net 核心 Web 应用程序的布局相同。除了上述之外,什么都没有触及。
  • 不确定设置是否应该指定UseIISIntegration而不是UseKestrel
  • @RahulAgarwal 这并没有解决我的问题我得到了同样的错误
  • @MattThomas 是的 .net core 的 IIS 插件和我使用的 .net core 版本存在问题。我使用的是 .net core 的预览版,但没有将 .netcore 模块更新到正确的版本。

标签: c# iis asp.net-core-2.0


【解决方案1】:

在我的情况下,我将 ASP.Net Core MVC 与 VS2017 一起使用,我已将 Index.cshtml 的构建操作设置为 Content,但仍然出现错误。

最后我猜页面有问题,所以我复制Index.cshtml的内容,删除Index.cshtml并重新启动Visual Studio。然后我Right click on the Folder &gt; Add &gt; View &gt; Give the file name Index,添加新的空页后,粘贴复制的内容,再次运行,问题解决。

【讨论】:

  • 我在关注 IdentityServer4 的文档时遇到了这个错误。唯一对我有用的是这个答案。
【解决方案2】:

以防万一有人对我的解决方案感兴趣:

.net 内核的 IIS 插件和我使用的 .net 内核版本存在问题。我使用的是 .net core 的预览版,但没有将 .netcore 模块更新到正确的版本

【讨论】:

    【解决方案3】:

    在我的情况下,我在 Area 工作 所以我没有在我的控制器中定义区域

    添加

        [Area("_AreaName_")]
    

    在控制器中的类解决我的问题之前。

    【讨论】:

      【解决方案4】:

      我在从 .Net Core 2.2 迁移到 Net Core 3.0 时遇到了这个错误,Dblock247 的回答启发了我检查 NuGet 包。

      我发现项目中引用了 .Net Core 2.2 和 .Net Core 3.1 包。许多 .Net Core 2.2 包没有对应的 .Net Core 3.1 包。一旦我删除了 .Net Core 2.2 包,我的应用程序就开始工作了。

      以下是我在迁移到 .Net Core 3.1 时所做的其他更改,以防上述建议对您不起作用。

      我也从IWebHost 迁移到IHostBuilder。这相当容易,因为IHostBuild 似乎将IWebHost 包装成Func

      我所做的下一个更改是从AddMvc 移动到AddControllers,其中包括调用新的AddNewtonsoft 方法。

              services.AddControllers(options =>
              {
                  options.EnableEndpointRouting = false;
      
              })
              .AddNewtonsoftJson(options => {
                  options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
                  options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
              });
      

      最后,在 Configure 方法中,我添加了新的 UseAuthenticationUsingRoutingUseEndpointsUseAuthorization

              app.UseAuthentication();
              app.UseRouting();
              app.UseAuthorization();
      
      
              app.UseEndpoints(endpoints =>
              {
                  endpoints.MapControllers();
      
                  endpoints.MapControllerRoute(
                      name: "default",
                      pattern: "{controller=Home}/{action=Index}/{id?}");
      
                  endpoints.MapRazorPages();
              });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-01-30
        • 2016-04-10
        • 2011-01-17
        • 2022-11-04
        • 1970-01-01
        • 2019-04-10
        • 2018-11-23
        相关资源
        最近更新 更多