2010-05-05 6 views
0

에 대한 질문은 내 프로젝트의 System.Windows.Forms에 대한 참조를 추가해야했습니다. asp.net에서 FolderBrowserDialog 컨트롤을 사용하기 위해 C# asp.net

는이 코드 작성 :

FolderBrowserDialog f = new FolderBrowserDialog(); 
f.ShowDialog(); 

을하지만,이 오류가 발생했습니다 :

Current thread must be set to single thread apartment (STA) mode before OLE calls can be made. Ensure that your Main function has STAThreadAttribute marked on it. This exception is only raised if a debugger is attached to the process. 

어떤 도움?

+0

asp.net 앱에서 WinForms 컨트롤을 사용해서는 안됩니다. 우리가하는 일을 더 많이 보여줄 수있었습니다. –

+0

무엇을하려고합니까? – SLaks

+0

나는 시스템의 관리자가 사용자 파일이 (서버에) 저장되어야하는 경로를 찾도록하고 싶다. – scatman

답변

1

ASP.NET 응용 프로그램에서이 컨트롤을 사용하려는 경우 슬픔에 잠길 것입니다.

ASP.NET 페이지에서 WinForms 컨트롤을 사용할 수 없습니다. 대신 FileUpload 컨트롤을 확인해야합니다 (사용자가 파일을 선택하여 사이트에 업로드 할 수 있음).

당신이 실제로 윈폼 응용 프로그램 (안 ASP.NET)를 구축하는 경우는, 다음 수정 (당신이 당신의 질문 태그를 수정해야합니다) 매우 쉽습니다 :

public static void Main() 

가된다 :

[STAThread] 
public static void Main() 

Visual Studio는 일반적으로 WinForms 프로젝트를 만들 때 생성 된 코드에이 코드를 추가합니다.

+0

글쎄 FileUpload 컨트롤을 사용하기 전에 사용자가 서버에서 경로를 찾을 수 있기를 원합니다 ... – scatman

+0

(특히 서버 구조 노출이 거대한 보안 위험으로 간주 될 수 있음을 고려하면) 기본 제공 컨트롤이 없습니다. . 나는 그것을 반대하는 것을 대담하게 제안 할 것이다. –

+0

네가 맞다.하지만이 시스템은 사설망 전용이며 신뢰할 수있는 사용자 만 액세스 할 수 있습니다. megapack에 의해 수행 된 컨트롤을 보았을 때, FolderBrowserDialog (System.Windows.Forms에 대한 참조를 추가하라는 요청조차도)와 같지만 오픈 소스가 아닙니다. – scatman

1

ASP.NET에서 Windows Forms 컨트롤을 사용할 수 없습니다. 그리고 사실 ASP.NET에서 FolderBrowserDialog를 사용하는 것은 웹 페이지이므로 많은 의미를 갖지 않습니다. 웹 응용 프로그램은 사용자의 파일 시스템에 직접 액세스 할 수 없습니다. 사용자가 파일을 가져 오려면 FileUpload 컨트롤을 사용해야합니다.

+0

만약 그것이 반대 방향이라면? 즉 사용자가 서버의 경로를 찾으려면? – scatman

+0

글쎄, 여전히 Windows Forms 컨트롤을 사용하여 그렇게 할 수는 없습니다. 그러나 가능하다해도 서버 구조를 웹을 통해 최종 사용자에게 공개하는 것은 좋지 않은 생각입니다. 인트라넷 응용 프로그램의 경우 아마도 * 괜찮을 수도 있지만 여전히 다른 방법을 찾으려고합니다. – RationalGeek

+0

예. 그것은 인트라넷 응용 프로그램을위한 것입니다. 나는 이미 megapack에 의한 컨트롤을 시도했다. FolderBrowserDialog와 동일하다. (심지어 System.Windows.Forms에 대한 참조를 추가 할 것을 요구한다.) 그러나 그것은 자유롭지 않다. – scatman

관련 문제