Шаблон электронной почты под wwwroot не найден - PullRequest
0 голосов
/ 18 октября 2019

У меня есть несколько шаблонов электронной почты в папке wwwroot, которые я использую на своем EmailService. Он работает на локальном компьютере, но когда я запускаю веб-приложение в Azure VSTS, я получаю сообщение об ошибке

System.IO.DirectoryNotFoundException: корневой каталог / app / wwwwroot / Templates не найден
в RazorLight. Razor.FileSystemRazorProject..ctor (корень строки)

folder structure

csproj

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

    <PropertyGroup>
        <TargetFramework>netcoreapp2.2</TargetFramework>
    </PropertyGroup>

    <ItemGroup>
        <PackageReference Include="Contratos" Version="1.0.0-CI-20191001-130431" />
        <PackageReference Include="MailKit" Version="2.3.1.6" />
        <PackageReference Include="MassTransit" Version="5.5.6-develop.2181" />
        <PackageReference Include="MassTransit.Autofac" Version="5.5.6-develop.2181" />
        <PackageReference Include="MassTransit.Azure.ServiceBus.Core" Version="5.5.6-develop.2181" />
        <PackageReference Include="MassTransit.Extensions.DependencyInjection" Version="5.5.6-develop.2181" />
        <PackageReference Include="MassTransit.Extensions.Logging" Version="5.5.6-develop.2181" />
        <PackageReference Include="Microsoft.AspNetCore" Version="2.2.0" />
        <PackageReference Include="Microsoft.AspNetCore.HttpsPolicy" Version="2.2.0" />
        <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.2.0" />
        <PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.2.0" />
        <PackageReference Include="Microsoft.Azure.KeyVault" Version="3.0.4" />
        <PackageReference Include="Microsoft.Extensions.Configuration.AzureKeyVault" Version="3.0.0" />
        <PackageReference Include="RazorLight" Version="2.0.0-beta1" />
    </ItemGroup>

    <ItemGroup>
      <_ContentIncludedByDefault Remove="wwwroot\StaticFiles\images\common\background.png" />
      <_ContentIncludedByDefault Remove="wwwroot\StaticFiles\images\common\bottom-bord
      <_ContentIncludedByDefault Remove="wwwroot\StaticFiles\images\common\youtube-logo_3x.png" />
    </ItemGroup>

    <ItemGroup>
      <Folder Include="wwwroot\StaticFiles" />
      <Folder Include="wwwroot\Templates" />
    </ItemGroup>

    <ItemGroup>
      <ProjectReference Include="..\Contratos\Contratos.csproj" />
    </ItemGroup>

</Project>

Любые идеи о том, как исправитьthis?

Обновление: если добавить это в csproj

<ItemGroup>
      <Folder Include="wwwroot\Templates\Password" />
      <Folder Include="wwwroot\StaticFiles\images" />
</ItemGroup>

, ошибка изменится на

Проект не может найти шаблон с ключом BlockedLogin.cshtml

Ответы [ 2 ]

0 голосов
/ 21 октября 2019

MVC прекомпилирует cshtml в папке wwwroot, генерируя views.dlls.

Для отключения необходимо явно указать:

<PropertyGroup>
    <MvcRazorCompileOnPublish>false</MvcRazorCompileOnPublish>
</PropertyGroup>

Затем вы можете использовать файлы в качестве шаблона.

0 голосов
/ 19 октября 2019

В VisualStudio, папка «Перейти к шаблонам». Выберите файлы, которые вы хотите иметь в папке wwwroot \ templates. И выберите свойства файла и измените настройки на

  1. Действие построения: Содержимое
  2. Копировать в выходной каталог: Всегда

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...