Я создаю веб-сайт EF Core. Он отправляет электронные письма асинхронно. Иногда по какой-либо причине электронная почта не работает. Я указываю обратный вызов, который обнаруживает ошибку и в настоящее время записывает информацию во временный файл, когда электронное письмо не удается. Это работает.
Вместо этого я хочу иметь возможность обновлять свою базу данных, но у меня нет доступа к dbContext из статического метода обратного вызова. Я попытался передать dbContext в объект обратного вызова, но он был удален при выполнении обратного вызова.
SmtpClient client = new SmtpClient(Server, Port);
client.EnableSsl = this.SendTls;
//--------------------------------
// Create credentials
//--------------------------------
System.Net.NetworkCredential cs = new System.Net.NetworkCredential(User, Password);
client.Credentials = cs;
//----------------------------------------------------------------------------------
// Before we send, lets write the email log so we will have an ID of the message...
//----------------------------------------------------------------------------------
int id = EmailHistory.WriteEmailLog(db, DateTime.UtcNow, mm.To, mm.From, mm.Subject, mm.Body, mm.CC, mm.Bcc, mm.ReplyToList, false);
//-------------------------
// Now send the email async with postback
//-------------------------
client.SendCompleted += new SendCompletedEventHandler(SendCompletedCallback);
string fileName = FileHelper.GetTempFileName(_ctx, "Error", "txt");
CallBackObject cbo = new CallBackObject(mm, db, fileName, id);
client.SendAsync(mm, cbo);
public class CallBackObject
{
public MailMessage mm;
public dbContext db;
public string fileName;
public int mailLogId;
public CallBackObject(MailMessage _mm, dbContext _db, string _fileName, int id)
{
mm = _mm;
db = _db;
fileName = _fileName;
mailLogId = id;
}
}
//--------------------------------------------------------------
// Come here when the send completes. Clean up any attachments
//--------------------------------------------------------------
static void SendCompletedCallback(object sender, AsyncCompletedEventArgs e)
{
CallBackObject cbo = (CallBackObject)e.UserState;
//------------------------------------------------------
// User state is the mail message that orifinalted it
//------------------------------------------------------
MailMessage mm = cbo.mm;
//dbContext db = new dbContext();
//------------------------------------------------------
// Now clean up any attachments by deleting temp files.
//------------------------------------------------------
if (mm.Attachments != null)
{
foreach (Attachment f in mm.Attachments)
{
f.Dispose();
FileHelper.DeleteTempFile(f.Name);
}
}
if (e.Error != null)
{
FileHelper.WriteTextFile(cbo.fileName, $"Email Error:
{e.Error.Message}\nTo:{mm.To}\n{mm.Subject}\nInner
Exception:{e.Error.InnerException}\nStack:
{e.Error.StackTrace}\nSource:{e.Error.Source}");
Есть ли способ создать dbContext с настройками базы данных моего приложения из статического метода? Я видел подобные сообщения, но не понял ответов.
Я создаю веб-сайт EF Core. Он отправляет электронные письма асинхронно. Иногда по какой-либо причине электронная почта не работает. Я указываю обратный вызов, который обнаруживает ошибку и в настоящее время записывает информацию во временный файл, когда электронное письмо не удается. Это работает. Вместо этого я хочу иметь возможность обновлять свою базу данных, но у меня нет доступа к dbContext из статического метода обратного вызова. Я попытался передать dbContext в объект обратного вызова, но он был удален при выполнении обратного вызова. [code] SmtpClient client = new SmtpClient(Server, Port); client.EnableSsl = this.SendTls; //-------------------------------- // Create credentials //-------------------------------- System.Net.NetworkCredential cs = new System.Net.NetworkCredential(User, Password); client.Credentials = cs;
//---------------------------------------------------------------------------------- // Before we send, lets write the email log so we will have an ID of the message... //---------------------------------------------------------------------------------- int id = EmailHistory.WriteEmailLog(db, DateTime.UtcNow, mm.To, mm.From, mm.Subject, mm.Body, mm.CC, mm.Bcc, mm.ReplyToList, false);
//------------------------- // Now send the email async with postback //------------------------- client.SendCompleted += new SendCompletedEventHandler(SendCompletedCallback); string fileName = FileHelper.GetTempFileName(_ctx, "Error", "txt"); CallBackObject cbo = new CallBackObject(mm, db, fileName, id); client.SendAsync(mm, cbo);
public class CallBackObject { public MailMessage mm; public dbContext db; public string fileName; public int mailLogId; public CallBackObject(MailMessage _mm, dbContext _db, string _fileName, int id) { mm = _mm; db = _db; fileName = _fileName; mailLogId = id; } } //-------------------------------------------------------------- // Come here when the send completes. Clean up any attachments //-------------------------------------------------------------- static void SendCompletedCallback(object sender, AsyncCompletedEventArgs e) { CallBackObject cbo = (CallBackObject)e.UserState; //------------------------------------------------------ // User state is the mail message that orifinalted it //------------------------------------------------------ MailMessage mm = cbo.mm;
//dbContext db = new dbContext();
//------------------------------------------------------ // Now clean up any attachments by deleting temp files. //------------------------------------------------------ if (mm.Attachments != null) { foreach (Attachment f in mm.Attachments) { f.Dispose(); FileHelper.DeleteTempFile(f.Name); } } if (e.Error != null) { FileHelper.WriteTextFile(cbo.fileName, $"Email Error: {e.Error.Message}\nTo:{mm.To}\n{mm.Subject}\nInner Exception:{e.Error.InnerException}\nStack: {e.Error.StackTrace}\nSource:{e.Error.Source}");
[/code] Есть ли способ создать dbContext с настройками базы данных моего приложения из статического метода? Я видел подобные сообщения, но не понял ответов.
Пожалуйста, рассмотрите следующий класс/метод, вызванный из класса экземпляра Blazor Page. Мой вопрос: если два потока называют ссылку MyStaticMethod одновременно передавать одну и ту же ссылку на ссылку в качестве аргумента, возможно ли, что индекс...
Я работаю над устаревшим кодом и обнаружил эту проблему: в OrderService есть статический метод createOrder(), в котором я хочу проверить, открыт ли магазин или нет
Я хочу создать нестатический метод openingHours() для проверки времени.
класс Sub { статический int y; общественная статическая сила foo() { это.у = 10; } } Я понимаю, что this представляет объект, вызывающий метод, и что статические методы не привязаны ни к какому объекту. Но в вышеупомянутом случае переменная y также...
У меня вопрос относительно поведения сборщика мусора в C#.
Я попробовал написать простой код и протестировать его, но он вернул ноль. Я не уверен в деталях.
public static void Test()
{
Dictionary dic = new Dictionary();
dic.Add( test , test );
}...
Я пытаюсь добавить подсказки типа к статическому методу Python с помощью typing.Self. Однако подсказка типа не применяется к аргументу self внутри самой функции.
from typing import Self