为什么AspCompat = true让我的asp web应用程序变慢?

时间:2013-09-23 12:43:17

标签: c# asp.net

我正在开发一个asp.net应用程序。 在一个页面上,我有一个TextBox和一个按钮。 当我点击Button时,会出现一个弹出窗口,它会要求我将TextBox的文本保存在我想要的路径上的文件中。

它给我错误 “在进行OLE调用之前,必须将当前线程设置为单线程单元(STA)模式。确保主函数上标记了STAThreadAttribute。仅当调试器附加到进程”

时才会引发此异常。
   protected void ButtonIDSaveAs_Click(object sender, EventArgs e)
    {
        try
        {
            SaveFileDialog saveFileDialog1 = new SaveFileDialog();
            saveFileDialog1.Title = "Save an Image File";
            //saveFileDialog1.ShowDialog();
            if (saveFileDialog1.FileName != "")
            {
                using (StreamWriter sw = new StreamWriter(saveFileDialog1.OpenFile()))
                {
                    sw.Write(TextBoxIDPVMContent.Text);
                    sw.Close();
                }
            }
        }
        catch (Exception ex)
        {
           // ex;
        }
    }

因此,要删除此错误,我已更改为我的aspx文件

中的AspCompat =“true”
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ABC.cs" Inherits="XYZ" ValidateRequest = "false" %> 

它使我的申请被绞死。 那我怎么能摆脱这个问题? 或者有没有其他方法来实现这个功能? 为什么它使我的应用程序非常慢?

另一方面,我创建了一个小的asp web应用程序并做同样的工作,就像我有一个文本框和一个按钮的页面,我想将文本框的数据保存到文件中。在这个应用程序中它的工作非常好。

我从早上开始就坚持这个问题,我知道这个问题背后会有一些小问题。

1 个答案:

答案 0 :(得分:2)

您无法在网络环境中使用SaveFileDialog。这适用于Windows窗体。混合Windows窗体组件和ASP.NET可能会产生异常副作用,并且它无法按照您的意图运行。

这就是为什么我假设你注释了对ShowDialog的调用。