Erro ASP.NET c#

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
 
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
 
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?
 
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 !
 
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:
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 :)
 
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
 
Back
Topo