Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .NET核心WebAPI VueJS模板发布问题_C#_Asp.net Core_Asp.net Spa - Fatal编程技术网

C# .NET核心WebAPI VueJS模板发布问题

C# .NET核心WebAPI VueJS模板发布问题,c#,asp.net-core,asp.net-spa,C#,Asp.net Core,Asp.net Spa,我正在试用找到的“VueJSwithASP.NETCore3.1WebAPI模板”,它在开发过程中运行得非常顺利。然而,我想看看它是如何处理发布的,但我无法让它正常工作 当运行publish to folder时,它不会将clientapp/dist文件夹移动到输出目录,这是正常的,所以我认为应该手动执行。因此,我尝试使用以下路径将dist文件夹的内容移动到output目录: “/publish/clientapp/dist” “/publish/dist” “/publish/clienta

我正在试用找到的“VueJSwithASP.NETCore3.1WebAPI模板”,它在开发过程中运行得非常顺利。然而,我想看看它是如何处理发布的,但我无法让它正常工作

当运行publish to folder时,它不会将clientapp/dist文件夹移动到输出目录,这是正常的,所以我认为应该手动执行。因此,我尝试使用以下路径将dist文件夹的内容移动到output目录:

  • “/publish/clientapp/dist”
  • “/publish/dist”
  • “/publish/clientapp”
但上述各项似乎都不起作用,我在运行.dll文件时出现以下错误:

fail: Microsoft.AspNetCore.Server.Kestrel[13]
      Connection id "0HLTD93CRG52F", Request id "0HLTD93CRG52F:00000001": An unhandled exception was thrown by the application.
System.InvalidOperationException: The SPA default page middleware could not return the default page '/index.html' because it was not found, and no other middleware handled the request.
Your application is running in Production mode, so make sure it has been published, or that you have built your SPA manually. Alternatively you may wish to switch to the Development environment.

   at Microsoft.AspNetCore.SpaServices.SpaDefaultPageMiddleware.<>c__DisplayClass0_0.<Attach>b__1(HttpContext context, Func`1 next)
   at Microsoft.AspNetCore.Builder.UseExtensions.<>c__DisplayClass0_1.<Use>b__1(HttpContext context)
   at Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.TryServeStaticFile(HttpContext context, String contentType, PathString subPath)
   at Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Builder.UseExtensions.<>c__DisplayClass0_2.<Use>b__2()
   at Microsoft.AspNetCore.SpaServices.SpaDefaultPageMiddleware.<>c__DisplayClass0_0.<Attach>b__0(HttpContext context, Func`1 next)
   at Microsoft.AspNetCore.Builder.UseExtensions.<>c__DisplayClass0_1.<Use>b__1(HttpContext context)
   at Microsoft.AspNetCore.Routing.EndpointMiddleware.Invoke(HttpContext httpContext)
   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext](IHttpApplication`1 application)
使用上面的代码,我假设我的dist文件夹应该位于/publish/clientapp/dist中,我已经尝试过了,但即使这样,我还是会遇到上面提到的错误


我希望有人能给我指出正确的方向-提前谢谢:)

模板中似乎有一个错误:
ClientApp
文件夹的名称是
ClientApp
。但是,启动中的所有相关代码都将其视为
ClientApp

  • 模板未配置为您生成VUEJ的任务。为此,请在
    csproj
    文件中添加任务:

    
    clientapp\
    $(默认项目除外)$(SpaRoot)节点_模块\**
    %(DistFiles.Identity)
    保存最新
    真的
    
  • 上面的代码大部分是从标准ASP.NET核心模板复制的。发布后,它将在
    clientapp/dist
    文件夹下构建您的VueJ。为了使ASP.NET Core了解这一点,请按以下方式配置您的SpaStaticFiles服务:

    services.AddSpaStaticFiles(configuration => { configuration.RootPath = "ClientApp"; configuration.RootPath = "clientapp/dist"; } services.AddSpaStaticFiles(配置=> { configuration.RootPath=“ClientApp”; configuration.RootPath=“clientapp/dist”; }
  • 最后,在生产环境中不需要源路径,因为它是自动生成的:

    app.UseSpa(spa => { if (env.IsDevelopment()) spa.Options.SourcePath = "ClientApp"; spa.Options.SourcePath = "clientapp"; else spa.Options.SourcePath = "dist" app.UseSpa(spa=> { if(env.IsDevelopment()) spa.Options.SourcePath=“ClientApp”; spa.Options.SourcePath=“clientapp”; 其他的 spa.Options.SourcePath=“dist”

  • 您好,谢谢您的帮助-这解决了我的问题:)@如果开发是从/wwwroot提供的,而生产是从/wwwroot/dist提供的,那么UseSpa看起来是什么样子?@JayBorseth UseSpa是一个在开发中很有用的中间件。它主要调用内部AngularCliServer/React Dev Server/Vue Dev Server,并代理对node.js服务器的请求。这毫无意义要设置SourcePath=“dist”。@itminus非常感谢您的回答,它节省了我一天的时间! app.UseSpa(spa => { if (env.IsDevelopment()) spa.Options.SourcePath = "ClientApp"; spa.Options.SourcePath = "clientapp"; else spa.Options.SourcePath = "dist"