1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Erro ASP.NET c#

Discussão em 'Programação' iniciada por Skulldevil, 7 de Outubro de 2008. (Respostas: 11; Visualizações: 2338)

  1. Skulldevil

    Skulldevil Power Member

    O meu problema é este, tenho uma pagina para inserir produtos que neste caso ou são tinteiros ou toners tem um formulario e um campo para inserir imagens!
    Funciona com Ajax, e o campo para inserir as imagens utiliza Ajax, o nome desse control é FileUploadAjax (Subgurim.Controles).
    Quando tento inserir um tinteiro por exemplo o erro que me ocorre é o seguinte:

    [FONT=Arial, Helvetica, Geneva, SunSans-Regular, sans-serif]Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

    Exception Details: System.InvalidOperationException: Showing a modal dialog box or form when the application is not running in UserInteractive mode is not a valid operation. Specify the ServiceNotification or DefaultDesktopOnly style to display a notification from a service application.

    Source Error:
    [/FONT][FONT=Arial, Helvetica, Geneva, SunSans-Regular, sans-serif]An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.[/FONT]

    Penso que este erro nada tenha a haver com o upload de imagens porque quando insiro uma marca para um produto insiro uma imagem e não ocorre o erro !
    Também sei que este erro ocorre quando o site está online e existe algum System.Windows.Forms.MessageBox.Show("");
    Espero que me possam ajudar !

    Cumps Skulldevil
     
  2. [C4]

    [C4] Power Member

    Assim de repente diria que o webservice chamado pelo ajax, esta a tentar abrir uma messagebox.
    Provavelmente a tentar mostrar algum erro num bloco try catch
     
  3. RicardoMoreira

    RicardoMoreira Power Member

    A mensagem de erro é clara: Showing a modal dialog box or form when the application is not running in UserInteractive mode is not a valid operation.

    Estás a mostrar alguma messagebox? Ou o controlo fileuploadajax mostra alguma?
     
  4. Skulldevil

    Skulldevil Power Member

    Não mostra nada apenas uma pagina com o erro !
     
  5. RicardoMoreira

    RicardoMoreira Power Member

    Mas era suposto mostrar alguma msgbox?

    Era mais fácil se mostrasses o código...
     
  6. Skulldevil

    Skulldevil Power Member

    Não porque quando se tem o site já num servidor e supostamente online! Não se pode ter MessageBox e quando se tem o erro que ocorre é este que eu tenho !
    Mas o problema está que eu nao tenho nenhuma messagebox !
     
  7. RicardoMoreira

    RicardoMoreira Power Member

    Mas como queres que alguem te ajude se não mostras o código que está a gerar o erro?
     
  8. Skulldevil

    Skulldevil Power Member

    Está ai o código que supostamente gera o erro:
    Código:
    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.IO;
    using Subgurim.Controles;
    
    public partial class produto : System.Web.UI.Page
    {
        BD.Produto bdP = new BD.Produto();
        string teste;
        string teste1;
        string teste2;
        string teste3;
        DataTable dt = new DataTable();
        PagedDataSource pds = new PagedDataSource();
        //PagedDataSource pds1 = new PagedDataSource();
    
        protected void Page_Load(object sender, EventArgs e)
        {
    
            
            
            if (FUo.IsPosting)
                this.managePostO();
            if (FUp.IsPosting)
                this.managePostP();
            if (FUi.IsPosting)
                this.managePostI();
            if (FUc.IsPosting)
                this.managePostC();
    
            actualizaCons();
            actualizaImp();
            actualizaComp();
            actualizaOut();
            if (!IsPostBack)
            {
    
                Session["id"] = "-1";
                Session["idImp"] = "-1";
                Session["idComp"] = "-1";
                Session["idOut"] = "-1";
    
                BD.Marca bdM = new BD.Marca();
                DataTable dt = bdM.marcaLista();
    
                marcaDDL.DataSource = dt;
                marcaDDL.DataValueField = "MARCA_ID";
                marcaDDL.DataTextField = "MARCA_NOME";
                marcaDDL.DataBind();
                ScriptManager1.RegisterPostBackControl(insereBT);
    
                marcaDDLi.DataSource = dt;
                marcaDDLi.DataValueField = "MARCA_ID";
                marcaDDLi.DataTextField = "MARCA_NOME";
                marcaDDLi.DataBind();
                ScriptManager1.RegisterPostBackControl(inserirBTi);
    
                marcaDDLp.DataSource = dt;
                marcaDDLp.DataValueField = "MARCA_ID";
                marcaDDLp.DataTextField = "MARCA_NOME";
                marcaDDLp.DataBind();
                ScriptManager1.RegisterPostBackControl(inserirBTp);
    
                marcaDDLo.DataSource = dt;
                marcaDDLo.DataValueField = "MARCA_ID";
                marcaDDLo.DataTextField = "MARCA_NOME";
                marcaDDLo.DataBind();
                ScriptManager1.RegisterPostBackControl(inserirBTo);
            }
    
        }
    
        //Consumiveis
        public void actualizaCons()
        {
    
            dt = bdP.consumiveisLista();
            pds.DataSource = dt.DefaultView;
            pds.AllowPaging = true;
            pds.PageSize = 5;
            int contpag = pds.PageCount;
            if (contpag > 1)
            {
    
                rep_paginacao1.Visible = true;
                DataTable pages = new DataTable();
                pages.Columns.Add("pagina", typeof(string));
                for (int i = 1; i < (contpag - 1); i++)
                {
                    pages.Rows.Add((i + 1).ToString());
                }
                rep_paginacao1.DataSource = pages;
                rep_paginacao1.DataBind();
            }
            else
            {
                rep_paginacao1.Visible = false;
            }
            pds.CurrentPageIndex = Int32.Parse(currentpage.InnerText.Trim());
            totalpagecount.InnerHtml = contpag.ToString();
    
            consumiveis.DataSource = pds;
            consumiveis.DataBind();
        }
        protected void insereBT_Click(object sender, EventArgs e)
        {
    
            bdP = new BD.Produto();
    
            Session["id"] = consL.Text;
            if (Session["id"].ToString() == "Label")
            {
                
                if (FUc.historial.Count > 0)
                {
                    string url = FUc.historial[0].FileName_Path.ToString();
                    teste = FUc.historial[0].FileName.ToString();
    
    
                    criarthumbnailsCons(teste);
                    string[] files = Directory.GetFiles(Server.MapPath(@"Imagens_Prod/consumivel/"));
                    foreach (string file in files)
                        File.Delete(file);
                    Response.Redirect("produto.aspx");
                }
                preencheCon(-1);
                Response.Redirect(Request.RawUrl);
            }
            else
            {
    
                if ((bdP.consumiveisEdita(Session["id"].ToString(), refeTB.Text, nomeTB.Text, marcaDDL.SelectedItem.ToString(), tipoDDL.SelectedItem.ToString(), generoDDL.SelectedItem.ToString(), caracteristicaTB.Text, desTB.Text, precoTB.Text, prodRB1.Checked.ToString())) && (bdP.produtoEdita(Session["id"].ToString(), refeTB.Text, nomeTB.Text, precoTB.Text)))
                {
    
                    refeTB.Text = "";
                    nomeTB.Text = "";
                    caracteristicaTB.Text = "";
                    desTB.Text = "";
                    precoTB.Text = "";
    
                    consL.Text = "Label";
                    insereBT.Text = "Inserir";
                }
    
                consL.Text = "Label";
    
            }
            FUc.Visible = true;
            actualizaCons();
            preencheCon(-1);
        }
        public void criarthumbnailsCons(string filename)
        {
           // Inicializar objetos
            System.Drawing.Image objThumbnail, postedfile;
    
            String strServerPath, strFilename;
            int shtWidth, shtHeight;
            // Atribuir a pasta para os thumbnails
            strServerPath = Server.MapPath("Imagens_Prod/consumivel/");
            // Recolher o nome do ficheiro
            strFilename = strServerPath + teste;
            // Recolher o ficheiro, se não der, da erro
            try
            {
                postedfile = System.Drawing.Image.FromFile(Server.MapPath("Imagens_Prod/consumivel/" + teste));
            }
            catch
            {
                
                postedfile = System.Drawing.Image.FromFile(Server.MapPath("Imagens/progress_bar.gif"));
            }
            //Ver qual é o maior, a largura ou altura
            if (postedfile.Width > postedfile.Height)
            {
                // Calcular uma altura proporcional a partir da largura
                shtWidth = 130;
                shtHeight = (Int16)((Double)postedfile.Height / ((Double)postedfile.Width / (Double)shtWidth));
            }
            else
            {
                shtHeight = 70;
                shtWidth = (Int16)((Double)postedfile.Width / ((Double)postedfile.Height / (Double)shtHeight));
            }
            // Criar thumbnail
            objThumbnail = postedfile.GetThumbnailImage(shtWidth, shtHeight, null, System.IntPtr.Zero);
    
            //Salvar os dados na base de dados
            string urlName = "Imagens_Prod_thum/consumivel/" + teste;
            if ((bdP.produtoInsere(refeTB.Text, nomeTB.Text, precoTB.Text) == 0) && (bdP.consumiveisInsere(refeTB.Text, nomeTB.Text, marcaDDL.SelectedItem.ToString(), tipoDDL.SelectedItem.ToString(), generoDDL.SelectedItem.ToString(), caracteristicaTB.Text, desTB.Text, precoTB.Text, urlName, prodRB1.Checked.ToString()) == 0))
            {
               
            }
           
            // Guardar o thumbnail no servidor
            objThumbnail.Save(Server.MapPath("Imagens_Prod_thum/consumivel/" + teste));
    
            //File.Delete(Server.MapPath("Imagens_Marca/" + teste));
    
            // Limpar a tralha
            postedfile.Dispose();
            objThumbnail.Dispose();
    
        }
        protected void consumiveis_ItemCommand(object source, RepeaterCommandEventArgs e)
        {
    
            string id = ((HtmlGenericControl)e.Item.FindControl("consumiveis_id")).InnerHtml;
    
            string caminho = ((HtmlGenericControl)e.Item.FindControl("consumiveis_img")).InnerHtml;
            if (e.CommandName.ToString() == "Apagarc")
            {
    
                File.Delete(Server.MapPath(caminho));
                bdP.consumiveisApaga(Int32.Parse(id));
                bdP.produtoApaga(Int32.Parse(id));
                actualizaCons();
            }
            if (e.CommandName.ToString() == "Editarc")
            {
                FUc.Visible=false;
                FUc.Enabled = false;
                preencheCon(Int32.Parse(id));
            }
        }
        public void managePostC()
        {
    
            HttpPostedFileAJAX pf = FUc.PostedFile;
    
            if ((pf.Type == HttpPostedFileAJAX.fileType.image) && pf.ContentLength <= 3100000)
            {
    
                FUc.SaveAs("Imagens_Prod/consumivel/" + pf.FileName);
            }
    
            FUc.text_Add = "Adicionar imagem";
            FUc.text_Delete = "Eliminar imagem";
            FUc.text_Uploading = "Carregando imagem";
            FUc.text_X = "Ocultar";
        }
        public void preencheCon(int id)
        {
            if (id.ToString() == "Label")
            {
                refeTB.Text = "";
                nomeTB.Text = "";
                caracteristicaTB.Text = "";
                desTB.Text = "";
                precoTB.Text = "";
    
                consL.Text = "Label";
                insereBT.Text = "Inserir";
            }
            else
            {
    
                dt = bdP.consumiveisSelect(id);
                if (dt.Rows.Count > 0)
                {
    
                    refeTB.Text = dt.Rows[0].ItemArray[dt.Columns["consumiveis_ref"].Ordinal].ToString();
                    nomeTB.Text = dt.Rows[0].ItemArray[dt.Columns["consumiveis_nome"].Ordinal].ToString();
                    caracteristicaTB.Text = dt.Rows[0].ItemArray[dt.Columns["consumiveis_caracteristica"].Ordinal].ToString();
                    desTB.Text = dt.Rows[0].ItemArray[dt.Columns["consumiveis_descricao"].Ordinal].ToString();
                    precoTB.Text = dt.Rows[0].ItemArray[dt.Columns["consumiveis_preco"].Ordinal].ToString();
    
                    consL.Text = id.ToString();
                    insereBT.Text = "Actualizar";
                }
            }
        }
        protected void rep_paginacao_ItemDataBound1(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {
                DataRowView drv = (DataRowView)e.Item.DataItem;
                if (drv != null)
                {
                    LinkButton lbpagina = (LinkButton)e.Item.FindControl("lbpagina");
                    HtmlGenericControl spanpagina = (HtmlGenericControl)e.Item.FindControl("spanpagina");
                    if ((Int32.Parse(spanpagina.InnerText.Trim()) - 1).ToString() == currentpage.InnerText.Trim())
                    {
                        lbpagina.Enabled = false;
                        lbpagina.Style.Add(HtmlTextWriterStyle.Color, "Black");
                        lbpagina.Style.Add(HtmlTextWriterStyle.FontWeight, "Bold");
                    }
                }
            }
            if (e.Item.ItemType == ListItemType.Header && currentpage.InnerText.Trim() == "0")
            {
                LinkButton lbprimeira = (LinkButton)e.Item.FindControl("lbprimeira");
                lbprimeira.Style.Add(HtmlTextWriterStyle.Color, "Black");
                lbprimeira.Style.Add(HtmlTextWriterStyle.FontWeight, "Bold");
            }
            if (e.Item.ItemType == ListItemType.Footer && currentpage.InnerText.Trim() == (pds.PageCount - 1).ToString())
            {
                LinkButton lbultima = (LinkButton)e.Item.FindControl("lbultima");
                lbultima.Style.Add(HtmlTextWriterStyle.Color, "Black");
                lbultima.Style.Add(HtmlTextWriterStyle.FontWeight, "Bold");
            }
        }
        protected void rep_paginacao_ItemCommand1(object source, RepeaterCommandEventArgs e)
        {
            switch (e.CommandName)
            {
                case "pagina":
                    currentpage.InnerHtml = ((e.Item.ItemIndex) + 1).ToString();
                    break;
                case "primeira":
                    currentpage.InnerHtml = "0";
                    break;
                case "ultima":
                    currentpage.InnerHtml = (Int16.Parse(totalpagecount.InnerText.Trim()) - 1).ToString();
                    break;
                default:
                    break;
            }
            actualizaCons();
        }
    
    
     
    Última edição pelo moderador: 7 de Outubro de 2008
  9. pks

    pks Power Member

    eu tive um problema parecido quando estava a desenvolver uma aplicação WPF e tentava chamar uma messagebox.
    pelo que percebi so podes chamar uma msgbox se tiveres dentro de um form, porque ACHO que o controlo messagebox deriva de FORM.
    o mesmo me aconteceu com o controlo OpenFileDialog

    para veres como contronei o problema ve o codigo.


    criei o form que com uma função que me lança o controlo e me retorna uma string, neste caso o path

    Código:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace WpfApplication1
    {
        public partial class import : Form
        {
            public string xpto(){
                OpenFileDialog op = new OpenFileDialog();
                op.Filter = "Excel files (*.xls)|*.xls|CSV files (*.csv)|*.csv|All files (*.*)|*.*";
                return (op.ShowDialog() == DialogResult.OK) ? op.FileName.ToString() : null;
            }
    
       }
    }
    
    
    quando preciso do controlo coloco o seguinte codigo:

    Código:
                import dialog= new import();
                import(dialog.xpto());
    
    espero ter ajudado :)
     
  10. Skulldevil

    Skulldevil Power Member

    Boa Sorte -.-
    Consegues perceber porque nem sequer consigo descobrir onde possa estar o erro ?!
    Ja tentei nao inserir imagens, comentei o codigo que fazia o upload de imagens !
    Se fosse algo facil eu proprio ja o teria corrigido.
    Mas ty pela ajuda
     
  11. RicardoMoreira

    RicardoMoreira Power Member

    Corre isso em debug e vê em que linha dá o erro, ou faz alguns traces.
     
  12. Skulldevil

    Skulldevil Power Member

    Quando corro o projecto no próprio pc sem ter feito o upload através de ftp para o servidor não tenho um único erro !
     

Partilhar esta Página