2009-11-03 6 views
2

컴파일되지 않습니다 웹 서버에 새 파일을 놓을 수 있으며 IIS가 자동으로 파일을 컴파일하고 페이지에 액세스 할 수 있습니다. 페이지 클래스 외부 내가 다음과 같이 두 파일이 웹 사이트가

http://www.website.com/page.aspx

... 그리고 .cs 파일에 포함 된 페이지 클래스의 관련 기능이 잘 작동합니다.

이제 내 페이지 클래스를 참조하는 "유형 namespace.classname을로드 할 수 없습니다."라는 오류가 표시됩니다.

이상한 이유로 저는 모든 .cs 파일, 심지어 페이지 클래스를 app_code 폴더에 넣어야합니다.

내 웹 사이트에서 변경된 사항은 모두 웹 루트에있는 페이지가 아닌 내 http://.../newfolder/page.aspx 인 구조를 재구성한다는 것입니다.

어떤 이유로 든 내 모든 page.aspx.cs 파일은 이제 app_code에 있어야합니다.

아이디어가 있으십니까?

+0

몇 가지 코드를 게시 할 수 있습니까? –

+0

Visual Studio를 사용하여 웹 프로젝트를 관리하지 않습니까? 당신이 있다면 이런 일이 일어날 것 같지 않습니다. – JoshMock

+0

예 (VS 사용) 우리가 발견 한 것은 내 PC에서 업로드 한 파일이 정상적으로 작동한다는 것입니다. 그러나 내 동료 PC에서 업로드 한 것과 정확히 동일한 파일은 작동하지 않습니다. 그의 파일은 항상 .cs 파일을 app_code 폴더에 넣어야합니다! pageload에서 단지 response.write가있는 아주 기본적인 파일조차도 작동하지 않을 것입니다. 파일을 서버에 업로드 할 때마다 .cs 파일이 app_code에있는 경우에만 작동합니다. – Remotec

답변

2

웹 응용 프로그램 프로젝트와 웹 사이트를 혼합하는 것처럼 들립니다.

파일이 정확히 동일합니까? 아마도 하나의 @Page 지시어는 CodeBehind = Page.aspx.cs이고 다른 하나는 CodeFile = Page.aspx.cs라고 말하고 있을까요?

CodeBehind는 프로젝트 컴파일이 필요하므로 새 .cs 파일을 놓을 수 없으므로 컴파일 된 새 DLL을 업로드해야합니다. CodeFile은 동적 컴파일을 허용합니다.

App_Code 디렉토리는 응용 프로그램에 액세스 할 때 (두 경우 모두) 동적으로 컴파일되므로 파일을 배치 할 때 Inherit 지시문에 유효한 유형이 있습니다. 일반적으로이 작업을 수행하지 마십시오. .csx 파일과 함께 .csx 파일을 이동하려고합니다. 특정 페이지와 관련이없는 비즈니스 논리 또는 유틸리티 클래스에는 App_Code를 사용하십시오.

마지막으로이 새 하위 디렉토리가 IIS의 새 응용 프로그램으로 설정 되었습니까? 새 디렉토리의 web.config 파일은 어떻게 변경됩니까? 동일한 버전의 ASP.NET을 실행하고 있습니까? "compilation"태그를 확인하십시오. 이 문제를 일으키기 위해 네가 할 수있는 일이 무엇인지 확신 할 수 없지만, 너는 야기 할 수 있다고 확신한다. 일부 카오스.

관련 문제