【问题标题】:why AspCompat = true is making my asp web application slow?为什么 AspCompat = true 使我的 asp Web 应用程序变慢?
【发布时间】:2016-05-31 15:13:56
【问题描述】:

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

它给了我错误 “在进行 OLE 调用之前,必须将当前线程设置为单线程单元 (STA) 模式。确保您的 Main 函数上标记了 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 应用程序并做同样的工作,就像我有一个带有一个文本框和一个按钮的页面,我想将文本框的数据保存到一个文件中。在这个应用程序中它工作得很好。

我从早上就被这个问题困住了,我知道这个问题背后会有一些小技巧。

【问题讨论】:

  • 您似乎正在尝试将 Windows 窗体应用程序直接转换为 Web 窗体应用程序。如果没有可怕的结果,这是无法做到的。
  • 编程没有“技巧”。唯一的诀窍是了解你在做什么。您正尝试在网站项目中显示 Windows 窗体控件 (SaveFileDialog)。这行不通。

标签: c# asp.net


【解决方案1】:

您不能在网络环境中使用SaveFileDialog。这适用于 Windows 窗体。混合使用 Windows 窗体组件和 ASP.NET 可能会产生不寻常的副作用,并且不会按您的预期工作。

这就是为什么我假设您已注释掉对 ShowDialog 的调用。

【讨论】:

  • 加,那是一个新问题,和这个无关。
  • 是的,在客户端计算上,我评论了 ShowDialog 因为这条线给了我错误
猜你喜欢
  • 2013-07-26
  • 2016-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多