Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# OpenFileDialog错误?_C#_Asp.net_Winforms - Fatal编程技术网

C# OpenFileDialog错误?

C# OpenFileDialog错误?,c#,asp.net,winforms,C#,Asp.net,Winforms,这是单击“保存”按钮时的代码: OpenFileDialog myOpenfileDialog = new OpenFileDialog(); myOpenfileDialog.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"; myOpenfileDialog.FilterIndex = 2; myOpenfileDialog.RestoreDirectory = true;

这是单击“保存”按钮时的代码:

OpenFileDialog myOpenfileDialog = new OpenFileDialog(); 
        myOpenfileDialog.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
        myOpenfileDialog.FilterIndex = 2;
        myOpenfileDialog.RestoreDirectory = true;

        if (myOpenfileDialog.ShowDialog() == DialogResult.OK)
        {
            FileUploadData.SaveAs(myOpenfileDialog.FileName);//my file upload control taking the path to save the file to the selected location
        }   
我得到一个例外:

在进行OLE调用之前,必须将当前线程设置为单线程单元(STA)模式。确保主函数上标记了STAThreadAttribute。只有将调试器附加到进程时,才会引发此异常。 这是threadStateException


嗯,这个信息对我来说相当清楚-你需要使用STA线程。如果您正在编写Windows窗体应用程序,请确保您的
Main
方法具有如下属性:

[STAThread]
static void Main(string[] args)
{
    ...
}

如果您正在编写ASP.NET应用程序,首先不应该尝试在代码中使用Windows窗体控件。我之所以提到这一点,是因为您已经用
winforms
asp.net
标记了您的问题-您不应该将这两个问题的代码混在一起。

嗯,我觉得这条信息相当清楚-您需要使用STA线程。如果您正在编写Windows窗体应用程序,请确保您的
Main
方法具有如下属性:

[STAThread]
static void Main(string[] args)
{
    ...
}

如果您正在编写ASP.NET应用程序,首先不应该尝试在代码中使用Windows窗体控件。我之所以提到这一点,是因为您已经用
winforms
asp.net
标记了您的问题-您不应该将这两个问题的代码混用在一起。

您的异常非常简单,只需将Main方法标记为STAThread属性即可

编辑:

考虑到这是一个ASP.NET应用程序,那么您需要在您的ASPX页面中使用以下内容来显示一个文件打开类对话框,让用户选择一个文件,我假设这就是您的意图:

<input type=file name="fileToUpload">

  OR

<asp:FileUpload ID="FileUpload1" runat="server" />

您的异常非常简单,只需使用STAThread属性标记Main方法即可

编辑:

考虑到这是一个ASP.NET应用程序,那么您需要在您的ASPX页面中使用以下内容来显示一个文件打开类对话框,让用户选择一个文件,我假设这就是您的意图:

<input type=file name="fileToUpload">

  OR

<asp:FileUpload ID="FileUpload1" runat="server" />

它不能用于ASP.NET。仅适用于Winforms。

只有Winforms可以使用单线程单元模型。

它不能用于ASP.NET。仅适用于Winforms。


只有Winforms可以使用单线程单元模型。

@Jon:你一直在回答问题,我要走了……twittter上见。@Jon:这是asp.net应用程序,不是win表单。我在应用程序中使用了System.Windows.Forms,因此我应该能够访问OpenFileDialog类,并使用它浏览保存文件的位置。@Nayemkhan:不要混用。首先使用OpenFileDialog的目的是什么?也许你应该问我如何在asp.net中实现OpenFileDialog类实现的功能。@ace:他打败了所有人,包括我。毕竟他是Jon Skeet:)@nayeemkhan:假设你试图从互联网(或你的网页)下载一个文件,浏览器通常有能力将文件保存到磁盘上。然而,不同的浏览器处理它的方式不同。例如,在IE中,在“下载”对话框中,您可以保存到磁盘上的特定位置,在firefox中,默认为根据您的首选项设置的位置。浏览器天生具有将文件保存到磁盘的能力,但我认为您无法控制通过服务器端将文件保存到哪里。@Jon:您一直在回答我的问题,我不在这里……twittter上见。@Jon:这是一个asp.net应用程序,不是赢家表单。我在应用程序中使用了System.Windows.Forms,因此我应该能够访问OpenFileDialog类,并使用它浏览保存文件的位置。@Nayemkhan:不要混用。首先使用OpenFileDialog的目的是什么?也许你应该问我如何在asp.net中实现OpenFileDialog类实现的功能。@ace:他打败了所有人,包括我。毕竟他是Jon Skeet:)@nayeemkhan:假设你试图从互联网(或你的网页)下载一个文件,浏览器通常有能力将文件保存到磁盘上。然而,不同的浏览器处理它的方式不同。例如,在IE中,在“下载”对话框中,您可以保存到磁盘上的特定位置,在firefox中,默认为根据您的首选项设置的位置。浏览器天生具有将文件保存到磁盘的能力,但是我认为您无法通过服务器端控制文件保存的位置。这是一个ASP.NET应用程序。winforms中没有main()。在ASP.NET应用程序中没有OpenFileDialog的使用,因此它被理解为winform应用程序。亲爱的,这是一个ASP.NET应用程序,我在其中使用System.Windows.Forms,以便使用OpenFileDialog类。OpenFileDialog在ASP.NET应用程序中不起作用,所以请忘记它。使用需要使用html输入标记类型=文件来显示文件打开对话框。这是一个ASP.NET应用程序。winforms中没有main()。在ASP.NET应用程序中没有OpenFileDialog的使用,因此它被理解为winform应用程序。亲爱的,这是一个ASP.NET应用程序,我在其中使用System.Windows.Forms,以便使用OpenFileDialog类。OpenFileDialog在ASP.NET应用程序中不起作用,所以请忘记它。使用需要使用html input tag type=file显示文件打开对话框。您已使用asp.net和winforms为问题添加了标签,但没有说明这是一个web应用程序,您试图在其中使用Windows窗体控件,还是一个Windows窗体应用程序。请为问题添加更多详细信息。这是一个asp.net应用程序,仅在我使用System.Windows.Forms使用OpenFileDialog类的情况下。问题是您不能。Winforms不适用于ASP.NET,而是适用于Winforms应用程序。您已将问题标记为ASP.NET和Winforms,但没有说明这是否是一个您正在使用的web应用程序