Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.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# 错误RZ3007:目标标记名不能为null或空白。Razor在发布时抛出错误,但在本地工作_C#_.net_Asp.net Mvc_Asp.net Core_Razor - Fatal编程技术网

C# 错误RZ3007:目标标记名不能为null或空白。Razor在发布时抛出错误,但在本地工作

C# 错误RZ3007:目标标记名不能为null或空白。Razor在发布时抛出错误,但在本地工作,c#,.net,asp.net-mvc,asp.net-core,razor,C#,.net,Asp.net Mvc,Asp.net Core,Razor,我一直在努力处理此错误消息已有一段时间了。一个奇怪的方面是,当我在我的机器上运行VisualStudio中的应用程序时,这种情况不会发生,但当我在服务器上发布它时,这种情况就会发生 我遵循了这个教程 主要web app项目的软件包: <Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>netcoreapp2.1</TargetFramework>

我一直在努力处理此错误消息已有一段时间了。一个奇怪的方面是,当我在我的机器上运行VisualStudio中的应用程序时,这种情况不会发生,但当我在服务器上发布它时,这种情况就会发生

我遵循了这个教程

主要web app项目的软件包:

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
    <DocumentationFile>SalesPortals.Services.WebHost.xml</DocumentationFile>
    <PreserveCompilationContext>true</PreserveCompilationContext>
    <MvcRazorExcludeRefAssembliesFromPublish>false</MvcRazorExcludeRefAssembliesFromPublish>
    <NoWarn>1701;1702;CS1591</NoWarn>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="AutoMapper" Version="8.0.0" />
    <PackageReference Include="DinkToPdf" Version="1.0.8" />
    <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.6.1" />
    <PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.1" />
    <PackageReference Include="Swashbuckle.AspNetCore" Version="4.0.1" />
  </ItemGroup>

结果很简单

 <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
    <DocumentationFile>SalesPortals.Services.WebHost.xml</DocumentationFile>
    <PreserveCompilationContext>true</PreserveCompilationContext>
    <MvcRazorExcludeRefAssembliesFromPublish>false</MvcRazorExcludeRefAssembliesFromPublish>
    <NoWarn>1701;1702;CS1591</NoWarn>
  </PropertyGroup>

SalesPortals.Services.WebHost.xml
符合事实的
错误的
1701;1702;CS1591
应该是

  <PropertyGroup>
    <DocumentationFile>SalesPortals.Services.WebHost.xml</DocumentationFile>
    <PreserveCompilationContext>true</PreserveCompilationContext>
    <MvcRazorExcludeRefAssembliesFromPublish>false</MvcRazorExcludeRefAssembliesFromPublish>
    <NoWarn>1701;1702;CS1591</NoWarn>
  </PropertyGroup>

SalesPortals.Services.WebHost.xml
符合事实的
错误的
1701;1702;CS1591

是的,非常相似,但建议的唯一解决方案是重新安装visual studio、删除bin和obj文件夹等。我正在服务器上发布此解决方案,在没有visual studio的情况下进行新的构建是不可能的。它还谈到删除.csproj文件中的某些行,如果您还没有尝试过,则针对2.0版。
  public class ViewRenderer : IViewRenderer
    {
        /// <summary>
        /// From https://long2know.com/2017/08/rendering-and-emailing-embedded-razor-views-with-net-core/
        /// </summary>
        private readonly IRazorViewEngine _viewEngine;
        private readonly ITempDataProvider _tempDataProvider;
        private readonly IServiceProvider _serviceProvider;

        public ViewRenderer(
            IRazorViewEngine viewEngine,
            ITempDataProvider tempDataProvider,
            IServiceProvider serviceProvider)
        {
            _viewEngine = viewEngine;
            _tempDataProvider = tempDataProvider;
            _serviceProvider = serviceProvider;
        }

        public async Task<string> RenderToStringAsync<TModel>(string viewName, TModel model)
        {
            var httpContext = new DefaultHttpContext { RequestServices = _serviceProvider };
            var actionContext = new ActionContext(httpContext, new RouteData(), new ActionDescriptor());

            using (var sw = new StringWriter())
            {
                var viewResult = _viewEngine.GetView("~/", viewName, false);

                if (!viewResult.Success)
                {
                    throw new TemplatingException($"Failed to render template {viewName} because it was not found.");
                }

                var viewDictionary = new ViewDataDictionary(new EmptyModelMetadataProvider(), new ModelStateDictionary())
                {
                    Model = model
                };

                try
                {
                    var viewContext = new ViewContext(
                         actionContext,
                         viewResult.View,
                         viewDictionary,
                         new TempDataDictionary(actionContext.HttpContext, _tempDataProvider),
                         sw,
                         new HtmlHelperOptions()
                     );

                    await viewResult.View.RenderAsync(viewContext);
                }
                catch (Exception ex)
                {
                    throw new TemplatingException("Failed to render template due to a razor engine failure", ex);
                }
;
                return sw.ToString();
            }
        }

        public Task<string> RenderToStringAsync(string viewName)
        {
            return RenderToStringAsync(viewName, string.Empty);
        }
    }
 at Microsoft.AspNetCore.Mvc.Razor.Internal.RazorViewCompiler.CompileAndEmit(String relativePath)
   at Microsoft.AspNetCore.Mvc.Razor.Internal.RazorViewCompiler.OnCacheMiss(String normalizedPath)
--- End of stack trace from previous location where exception was thrown ---
   at Microsoft.AspNetCore.Mvc.Razor.Internal.DefaultRazorPageFactoryProvider.CreateFactory(String relativePath)
   at Microsoft.AspNetCore.Mvc.Razor.RazorViewEngine.CreateCacheResult(HashSet`1 expirationTokens, String relativePath, Boolean isMainPage)
   at Microsoft.AspNetCore.Mvc.Razor.RazorViewEngine.LocatePageFromPath(String executingFilePath, String pagePath, Boolean isMainPage)
   at Microsoft.AspNetCore.Mvc.Razor.RazorViewEngine.GetView(String executingFilePath, String viewPath, Boolean isMainPage)
   at SalesPortals.Services.Templating.ViewRenderer.RenderToStringAsync[TModel](String viewName, TModel model) in E:\BuildAgent\work\be7b69c779fa7cc0\src\SalesPortals.Services.Templating\ViewRenderer.cs:line 44
   at SalesPortals.Services.BusinessLogic.TemplateFacade.CreatePdf(String templateName, ITemplateModel request) in E:\BuildAgent\work\be7b69c779fa7cc0\src\SalesPortals.Services.BusinessLogic\TemplateFacade.cs:line 37
   at SalesPortals.Services.WebHost.Controllers.TemplateController.HelloWorldPdfAsync(HelloWorldTemplateModel request) in E:\BuildAgent\work\be7b69c779fa7cc0\src\SalesPortals.Services.WebHost\Controllers\TemplateController.cs:line 34
   at lambda_method(Closure , Object )
   at Microsoft.AspNetCore.Mvc.Internal.ActionMethodExecutor.TaskOfActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeActionMethodAsync()
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeNextActionFilterAsync()
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Rethrow(ActionExecutedContext context)
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.InvokeInnerFilterAsync()
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextResourceFilter()
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResourceExecutedContext context)
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeFilterPipelineAsync()
   at Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeAsync()
   at Microsoft.AspNetCore.Builder.RouterMiddleware.Invoke(HttpContext httpContext)
   at Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext context)
   at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
   at Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Server.IISIntegration.IISMiddleware.Invoke(HttpContext httpContext)
   at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext](IHttpApplication`1 application)
 <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
    <DocumentationFile>SalesPortals.Services.WebHost.xml</DocumentationFile>
    <PreserveCompilationContext>true</PreserveCompilationContext>
    <MvcRazorExcludeRefAssembliesFromPublish>false</MvcRazorExcludeRefAssembliesFromPublish>
    <NoWarn>1701;1702;CS1591</NoWarn>
  </PropertyGroup>
  <PropertyGroup>
    <DocumentationFile>SalesPortals.Services.WebHost.xml</DocumentationFile>
    <PreserveCompilationContext>true</PreserveCompilationContext>
    <MvcRazorExcludeRefAssembliesFromPublish>false</MvcRazorExcludeRefAssembliesFromPublish>
    <NoWarn>1701;1702;CS1591</NoWarn>
  </PropertyGroup>