asp.net-core - 是否可以部署未编译的 ASP.NET Razor Pages 网站?

标签 asp.net-core razor-pages

我想知道是否可以将 ASP.NET Razor Pages 网站的源代码复制到 Windows Web 服务器并使其无需发布/编译即可运行?

与 ASP.NET Web Forms 网站类似,上传源代码(*.aspx 和 *.aspx.cs 文件)并在运行时进行编译?

我看到了一些关于 Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation 的内容,但我不确定这是否是我想要的以及如何使用它。

这可能吗?有关于如何做到这一点的指导或链接吗?

PS。我确信这不是一个好的做法,但仍然想要一个答案......谢谢。

最佳答案

Is this possible and any guidance or links on how to do it?

PS. I'm sure this is not good practice, but would still like an answer

有一种方法可以允许部署“未编译”*.cshtml。假设您使用的是 ASP.NET Core 3.1:

  1. 首先,添加对 Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation 的包引用:

    <PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="3.1.*" />
    
  2. 更改您的服务以允许运行时编译:

     services.AddRazorPages().AddRazorRuntimeCompilation();
     
  3. Configure a custom Task to copy the source code to publish dir in your *.csproj file:

    <ItemGroup>
        <ViewFiles Include="$(ProjectDir)\Pages\**\*.cshtml" />
    </ItemGroup>
    <Target Name="CopyViewFilesAfterPublish" AfterTargets="Publish">
        <Copy SourceFiles="@(ViewFiles)" 
          DestinationFolder="$(PublishDir)\Pages\%(RecursiveDir)" 
        />
    </Target>
    

演示

我发布了一个 RazorPage WebApp 并将其托管在 IIS 上。然后我们可以动态更改 Pages/**/*.cshtml View :

enter image description here

关于asp.net-core - 是否可以部署未编译的 ASP.NET Razor Pages 网站?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59279396/

相关文章:

javascript - 如何从 JavaScript 触发 ASP.NET Core 客户端验证

asp.net-core - Razor 页面基于角色的授权

asp.net-core - ASP 核心中间件中的当前 URL?

c# - ASP.NET Core Action 筛选器未被调用

azure - 尝试通过另一个 Web 应用程序调用 Web 应用程序内的 API 时出现错误 - Azure

asp.net-core - 带有继承的 ASPNET Core 3.0 模型验证错误

c# - ASP.NET Core HttpClient无法在容器中进行HTTPS调用

c# - 如何根据 Razor 页面中主表中的项目 ID 检索子表的项目?

c# - 将数据从 View 传递到 Controller asp.net core razor 页面

c# - Razor Pages中如何处理input=file/IFormFile双向绑定(bind)