Cześć!
Mam pewien problem, z którym walczę od prawie 2 dni i nadal nie mam pojęcia dlaczego tak się dzieje. Poniżej mój kod, który na serwerze wykonuje się do momentu zamknięcia połączenia z bazą danych - con.Close(); Dalej nie chce iść, a lokalnie u mnie cały skrypt działa.
string query = "INSERT INTO CMS_ORDERS_BUYERS (BUYER_ID, BUYER_DATE, BUYER_NAME, BUYER_SURNAME, BUYER_ADRESS, BUYER_CITY, BUYER_POSTCODE, BUYER_MAIL, BUYER_PHONE, BUYER_DELIVERY, BUYER_VAT, BUYER_GUID, CLIENT_ID, BUYER_NIP, BUYER_COMPANY, BUYER_CODE) VALUES (@ID, @DATE, @NAME, @SURNAME, @ADRESS, @CITY, @POSTCODE, @MAIL, @PHONE, @DELIVERY, @VAT, @GUID, @CLIENT_ID, @NIP, @COMPANY, @CODE)";
SqlCommand cmd = new SqlCommand(query, con);
cmd.Parameters.Add("@ID", System.Data.SqlDbType.NVarChar).Value = id;
cmd.Parameters.Add("@DATE", System.Data.SqlDbType.NVarChar).Value = DateTime.Now;
cmd.Parameters.Add("@NAME", System.Data.SqlDbType.NVarChar).Value = Imię.Text;
cmd.Parameters.Add("@SURNAME", System.Data.SqlDbType.NVarChar).Value = Nazwisko.Text;
cmd.Parameters.Add("@ADRESS", System.Data.SqlDbType.NVarChar).Value = Adres.Text;
cmd.Parameters.Add("@CITY", System.Data.SqlDbType.NVarChar).Value = Miejscowość.Text;
cmd.Parameters.Add("@POSTCODE", System.Data.SqlDbType.NVarChar).Value = KodPocztowy.Text;
cmd.Parameters.Add("@MAIL", System.Data.SqlDbType.NVarChar).Value = Email.Text;
cmd.Parameters.Add("@PHONE", System.Data.SqlDbType.NVarChar).Value = Telefon.Text;
cmd.Parameters.Add("@DELIVERY", System.Data.SqlDbType.NVarChar).Value = DropDownList1.SelectedValue;
cmd.Parameters.Add("@VAT", System.Data.SqlDbType.NVarChar).Value = VAT;
cmd.Parameters.Add("@GUID", System.Data.SqlDbType.NVarChar).Value = Request.Cookies["GUID"].Value;
cmd.Parameters.Add("@CLIENT_ID", System.Data.SqlDbType.Int).Value = int.Parse(HiddenField1.Value);
cmd.Parameters.Add("@NIP", System.Data.SqlDbType.NVarChar).Value = NIP.Text;
cmd.Parameters.Add("@COMPANY", System.Data.SqlDbType.NVarChar).Value = Company.Text;
cmd.Parameters.Add("@CODE", System.Data.SqlDbType.NVarChar).Value = Rabat.Text;
con.Open();
cmd.ExecuteNonQuery();
con.Close();
string listaProduktow = "";
foreach (GridViewRow row in GridView1.Rows)
{
listaProduktow += row.Cells[2].Text + "x " + row.Cells[1].Text + ", ";
}
string rodzajPrzesylki = DropDownList1.SelectedValue.Substring(0, DropDownList1.SelectedValue.IndexOf("-"));
string kwotaRazem = GridView1.FooterRow.Cells[4].Text.Substring(0, GridView1.FooterRow.Cells[4].Text.IndexOf(" "));
string cenaPrzesylki = DropDownList1.SelectedValue.Substring(DropDownList1.SelectedValue.IndexOf("-") + 1);
string z24_id_sprzedawcy = "*****";
string z24_nazwa = "****** - zamowienie " + id.ToString();
string z24_crc = "******";
string z24_return_url = "http://" + Request.Url.Host + "/koszyk.aspx?done";
decimal znizka = 1 - Convert.ToDecimal(znizkaZBazy) / 100;
decimal kwotaZamowienie = Convert.ToDecimal(kwotaRazem);
decimal kwotaPrzesylka = Convert.ToDecimal(cenaPrzesylki.Substring(0, cenaPrzesylki.IndexOf("P")));
decimal z24_kwota_decimal = ((znizka * kwotaZamowienie) + kwotaPrzesylka) * 100;
string z24_kwota = Convert.ToInt32(z24_kwota_decimal).ToString();
string przelewy24URL = "https://sklep.przelewy24.pl/zakup.php?z24_id_sprzedawcy=" + z24_id_sprzedawcy + "&z24_nazwa=" + z24_nazwa + "&z24_crc=" + z24_crc + "&z24_kwota=" + z24_kwota + "&z24_return_url=" + z24_return_url + "";
string body = PopulateBody(id.ToString(), DateTime.Now.ToString(), Imię.Text, Nazwisko.Text, Adres.Text, KodPocztowy.Text, Miejscowość.Text, Telefon.Text, Email.Text, listaProduktow, rodzajPrzesylki, (znizka * kwotaZamowienie).ToString("0.00"), cenaPrzesylki, NIP.Text, Company.Text);
SendHtmlFormattedEmail(Email.Text, "Zamówienie - Naturalna Wytwórnia Piękna", body);
Response.Redirect(przelewy24URL);
W czym może tkwić problem?
EDIT 1:
Skrypt nie szedł dalej, ponieważ miałem pochrzanione coś z UpdatePanelem, w którym znajdowały się textboxy, których treść zapisywana jest w bazie danych. Po ogarnięciu UpdatePanelu (dokładnie zapomniałem usunąć asynchronicznego triggera dla tego buttona, a przecież on już nie był w UP) i nie wyrzucało mi wyjątku. Natomiast teraz mam coś z wysyłaniem mail'a:
Security Exception
Description: The application attempted to perform an operation not allowed by the security policy. To grant this application the required permission please contact your system administrator or change the application's trust level in the configuration file.
Exception Details: System.Security.SecurityException: Request for the permission of type 'System.Net.Mail.SmtpPermission, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.
O co dokładnie może chodzić? Skrypt poniżej:
using (MailMessage mailMessage = new MailMessage())
{
mailMessage.From = new MailAddress(ConfigurationManager.AppSettings["Nadawca"]);
mailMessage.Subject = Title;
mailMessage.Body = body;
mailMessage.IsBodyHtml = true;
mailMessage.To.Add(new MailAddress(odbiorcaMail));
SmtpClient smtp = new SmtpClient();
smtp.Host = ConfigurationManager.AppSettings["Host"];
smtp.EnableSsl = Convert.ToBoolean(ConfigurationManager.AppSettings["EnableSsl"]);
System.Net.NetworkCredential NetworkCred = new System.Net.NetworkCredential();
NetworkCred.UserName = ConfigurationManager.AppSettings["Nadawca"];
NetworkCred.Password = ConfigurationManager.AppSettings["Password"];
//smtp.UseDefaultCredentials = true;
smtp.Credentials = NetworkCred;
smtp.Port = int.Parse(ConfigurationManager.AppSettings["Port"]);
smtp.Send(mailMessage);
}
EDIT 2:
Chodziło o port TLS... Musiałem w web.configu zmienić port z 587 na 25 i wszystko śmiga aż miło. Taki banał, a ile nerwów :)