2016-11-15 4 views
0

В приложении .NET CORE я использую статические файлы в папке wwwroot. во время работы как dotnet run файл index.html отображается плавно и нормально в localhost:port/, но после публикации приложения в качестве SCD пакета развития самодостаточного и запустить .exe сгенерированный файл, то static files не отображается на localhost:port/.Доступ к статическим файлам в SCD

В окне разработчика браузера я получил 404 error, файл не найден.

+0

Вы используете файл .exe в каталоге 'publish'? – svick

+0

Да @svick, на самом деле я пробовал и то, и другое внутри «публиковать», а другое за его пределами, никто из них не работал. –

+0

Каков был рабочий каталог при запуске? – svick

ответ

1

Добавить соответствующий отчет в ваш project.json:

"publishOptions": { 
    "include": [ 
     "wwwroot", 
     "appsettings.json", 
     "web.config" 
    ] 
    }, 
+0

Спасибо, он сделал копию файлов в папку 'publish', вместо этого ручная копия/вставка, которую я сделал. –

+0

вы можете помочь с этим PLS: http://stackoverflow.com/questions/40626872/attaching-a-file-from-zip-folder –

0

По-видимому, файлы, отличные от .cs, не упакованы и должны быть добавлены вручную в папку publish.

Я пример ниже для отправки HTML-файл в качестве прикрепленного электронной почты:

enter image description here

и файлы структуры:

project.json

{ 
    "version": "1.0.0-*", 
    "buildOptions": { 
    "debugType": "portable", 
    "emitEntryPoint": true 
}, 
"runtimes": { 
    "win10-x64": {}, 
    "win10-x86": {} 
}, 
"dependencies": { 
    "NETStandard.Library": "1.6.0", 
    "Microsoft.NETCore.Runtime.CoreCLR": "1.0.2", 
    "Microsoft.NETCore.DotNetHostPolicy": "1.0.1", 
    "MailKit" : "1.10.0" 
}, 
"frameworks": { 
    "netstandard1.6": { } 
} 
} 

program.cs

using System; 
using System.IO; // for File.ReadAllText 
using MailKit.Net.Smtp; // for SmtpClient 
using MimeKit; // for MimeMessage, MailboxAddress and MailboxAddress 
using MailKit; // for ProtocolLogger 

namespace sendHTMLemail 
{ 
    public class newsLetter 
    { 
     public static void Main() 
     { 
      var message = new MimeMessage(); 
      message.From.Add(new MailboxAddress("INFO", "[email protected]")); 
      message.To.Add(new MailboxAddress("MYSELF", "[email protected]")); 
      message.Subject = "Test Email"; 
      var bodyBuilder = new BodyBuilder(); 
      string htmlFilePath = "./html-files/msg.html"; 
      bodyBuilder.Attachments.Add("./html-files/msg.html"); 
      bodyBuilder.HtmlBody = File.ReadAllText(htmlFilePath); 
      message.Body = bodyBuilder.ToMessageBody(); 

      using (var client = new SmtpClient (new ProtocolLogger ("smtp.log"))) 
      { 
        client.Connect("smtp.office365.com", 587); 
        try{ 
         client.Authenticate("[email protected]", "[email protected]"); 
        } 
        catch{ 
         Console.WriteLine("Authentication Faild"); 
        } 

        try 
         { 
         client.Send(message); 
        } 
        catch (Exception) 
         { 
          Console.WriteLine("ERROR"); 
        } 
        client.Disconnect(true); 
      } 
     } 
    } 
} 

выше работала очень хорошо, и publish был подготовлен выполнив следующие команды:

dotnet restore 

dotnet build -r win10-x64 
dotnet build -r win10-x86 

dotnet publish -c release -r win10-x64 
dotnet publish -c release -r win10-x86 

, но при выполнении файла .exe в папке publish, это дало ошибку, что файл pathTo/html-files/msg.html не найден ,

После того, как я скопировал папку, необходимую для publish папку, как показано ниже, все работало отлично:

enter image description here

ПРИМЕЧАНИЕ Если не нужен/статический файл общественности будет виден пользователю , затем вы можете сжать их, а затем прочитать их из потока памяти, как объяснено. here

Смежные вопросы