Я пересматриваю программу справочной службы, которую я написал для работы, и хочу реорганизовать мой код, поэтому, когда отправляется билет, он пытается отправить электронное письмо сначала, прежде чем создавать билет в моей базе данных.Null Reference Исключение, вызываемое при вызове метода sendmail()
Но если я вызову метод SendMail (ticket) перед моим контекстом. Метод CreateCetateTicket (ticket) Я получаю null ref. исключение, даже если я объявляю и запускаю объект билета перед началом работы.
Вот мой код для моего метода NewTicket
private void CreateNewTicket()
{
//set search filter to currentuser
dS.Filter = "(&(objectClass=user)(anr=" + userName + "))";
//find current user in the acrive director
SearchResult sR = dS.FindOne();
var ticket = new HelpTicket
{
Title = title,
DescText = descText,
Employee = GetProp(sR, "Name"),
EmpEmail = GetProp(sR, "mail"),
DateSubmited = DateTime.Now,
// Urgency = selectedUrgency,
UrgentID = SelectedUrgency.UrgentID,
TypeID = SelectedProblemType.TypeID
};
try
{
//if sendmail here it thorws the exception
//SendMail(ticket);
try {
context.CreateTicket(ticket);
//If I call context.createticket first it works
SendMail(ticket);
CloseDialog = true;
}
catch
(System.Exception ex)
{
MessageBox.Show("Error Submitting ticket: " + ex.Message,"Error Submitting Ticket",MessageBoxButton.OK,MessageBoxImage.Error);
}
}
catch (Exception ex1)
{
MessageBox.Show("Error Submitting ticket, please try again.\n" + ex1.Message,"Error Creating ticket",MessageBoxButton.OK,MessageBoxImage.Error);
CloseDialog = true;
}
}
кода SendMail (билет)
public override void SendMail(HelpTicket ticket)
{
Microsoft.Office.Interop.Outlook.Application outlook = new Microsoft.Office.Interop.Outlook.Application();
Microsoft.Office.Interop.Outlook.MailItem mailMsg =
(Microsoft.Office.Interop.Outlook.MailItem)outlook.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);
Microsoft.Office.Interop.Outlook.Inspector oInspector = mailMsg.GetInspector;
mailMsg.To = "[email protected]";
mailMsg.Subject = ticket.Title;
mailMsg.HTMLBody = "<b>Urgency: </b>" + ticket.Urgency.Description + "<br/>" +
"<b>Problem Type: </b>" + ticket.ProblemType.ProblemDesc + "<br/><hr/><br/>" +
ConvertToHtml(ticket.DescText);
mailMsg.Send();
}
Если вам нужно больше фрагментов кода, дайте мне знать, и я выложу их
Хорошо, это имеет смысл, поскольку перед тем, как он переходит в метод CreateTicket(), который отправляет новый билет обратно в мою базу данных, как только он возвращается к вызову, билет имеет правильные ссылки на другие объекты, Urgency и ProblemType , Думаю, я знаю, как это исправить. Спасибо за удар мозга! – PnkFld7892