iis 未找到视图“”,

s6fujrry  于 2022-11-12  发布在  其他
关注(0)|答案(6)|浏览(160)

我将.net core 2.0应用程序部署到IIS,并收到以下错误。
无效操作异常错误:未找到视图'Index'。搜索了以下位置:/视图/主页/索引.cshtml /视图/共享/索引.cshtml
这只是一个全新的默认。net核心网页模板,我正在使用测试网页部署。我已经尝试了下面的代码,但也不工作。

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

我有没有漏掉什么

堆栈跟踪:

消息无效操作异常:未找到视图'Index'。搜索了以下位置:/视图/主目录/索引.cshtml /视图/共享/索引.cshtml

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()

velaa5lx

velaa5lx1#

在我的案例中,我使用ASP.NET Core MVC和VS2017,我已经将Index.cshtml的构建操作设置为Content,但仍然出现错误。
最后我猜测页面有问题,于是我复制了Index.cshtml的内容,删除Index.cshtml,重新启动Visual Studio,然后我Right click on the Folder > Add > View > Give the file name Index,添加新的空页面后,粘贴复制的内容,再次运行,问题解决了。

bvn4nwqk

bvn4nwqk2#

以防有人对我的决议感兴趣:
这是.net core的IIS插件和我使用的.net core版本的问题。我使用的是.net core的预览版本,但我没有将.netcore模块更新为正确的版本

2g32fytz

2g32fytz3#

我在从.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 Package 成了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();
        });
nfs0ujit

nfs0ujit4#

在我的例子中,我正在处理区域,所以我没有在控制器中定义区域
正在添加

[Area("_AreaName_")]

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

o3imoua4

o3imoua45#

在我的情况下,它是这个选项。在设置它从“不复制”的值到任何选项的“复制...”一切工作的预期。截图是从JetBrains骑士,这是我的Index.cshtml的属性

此操作将此ItemGroup添加到项目文件中:

<Project>
...
    <ItemGroup>
        <Content Update="Views\Home\Index.cshtml">    
        <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
...
    </ItemGroup>
</Project>
ubbxdtey

ubbxdtey6#

我也面临着类似的问题,花了很长时间来修复...解决方案是在.csproj如果任何视图是与删除,然后删除这些条目,并包括这些视图到项目在解决方案资源管理器...然后实际的修复只是添加一个测试视图viewfile index 3. cstml,并使其从行动调用,然后部署所有工作良好。稍后可以删除该额外的视图文件。100%它的工作。

相关问题