2011-01-12 10 views
3

웹 사이트를 서버에 배포 한 후 클래스에 액세스하는 데 문제가 있습니다.asp.NET 2.0 웹 사이트에서 App_Code의 클래스에 액세스 할 수 없습니다.

컴파일러 오류 메시지 : CS0246 : 형식 또는 네임 스페이스 이름 '주문'을 (를) 찾을 수 없습니다 (당신은 using 지시문을 누락 참고이 웹 사이트하지 웹 국지적 인 오류가 응용 프로그램입니다 또는 어셈블리 참조?)

버전 정보 : Microsoft .NET Framework 버전 : 2.0.50727.1433; ASP.NET 버전 : 2.0.50727.1433

나는 많은 인터넷 검색을 수행했으며 도움이되는 정보를 찾을 수 없었습니다.

내 코드 (I 주문을 선언 라인에 컴파일러 오류) 다음과 같습니다

namespace Foo 
{ 
    public class Order 
    { 
     ....etc 
    } 
} 

이상한 것은이 :

//Default.aspx.cs 
namespace Foo 
{ 
    public partial class _Default : System.Web.UI.Page 
    { 
     private Order custOrder; 
     ....etc 
    } 
} 

App_Code 폴더에서 나는 Order.cs 가지고 이것은 로컬 및 개발 환경에서 잘 작동합니다. qa 환경으로 이동하면 오류가 발생합니다.

전 코드를 Subversion 저장소에 커밋 한 다음 서버 컴퓨터에서 내보내기를 수행하여 배포합니다.

나는 네임 스페이스 오류 일 수 있다고 생각하지만, 일부 컴퓨터에서는 작동하지 않는 이유는 모르겠다.

이 문제를 일으킬 수있는 다른 서버에는 어떤 것이 다를 수 있습니다. 모든 시스템에서 .net 버전을 2.0으로보고합니다.

답변

3

오류는 해당 유형을 찾을 수 없다는 의미입니다.

가능한 원인 :

  1. 컴파일 오류가 컴파일되지 않도록 App_Code 폴더에 .cs 파일을 막았다. ASP.NET에서 컴파일 된 코드를 보면 찾고있는 클래스를 찾을 수 없기 때문에 오류가 발생합니다.

  2. .cs 파일이 app_code에 배포되지 않았습니다. 소스 파일이 사이트에 없으면 컴파일 할 수 없습니다.

  3. 사용 권한 문제로 인해 서버에서 .cs 파일을로드 할 수 없습니다.

  4. 페이지 중 하나가 .cs 또는 .aspx의 오타, 새 네임 스페이스로 이동 된 클래스 또는 이름이 바뀐 클래스 등을 잘못 참조하고 있습니다.

기본적으로 소스를 찾거나 액세스하거나 컴파일 할 수 없습니다.

+0

1과 4는 다른 두 머신에서 올바르게 컴파일되므로 거의 발생하지 않습니다. 나는 폴더가 거기에 있는지를 두 번 확인 하겠지만, aspx 파일과 같은 방법으로 복사하지 않은 이유는 모르겠다. 권한에 대한 동의. – Tavis

+0

@Tavis 최근에이 문제가 나타 났습니까? 모든 서버 설정이 변경 될 수 있습니다. –

+0

특정 서버에서 시도한 것은 이번이 처음입니다. 내 생각에 부적절하게 구성되었지만 액세스 권한이 없습니다. 내가 할 수있는 일은 폴더를 업로드하도록 요청하는 것뿐입니다. 내 선택의 폭이 좁아서. 나는 누군가가 비슷한 것을 보았길 바랬다. – Tavis

0

.aspx 파일 내에 .dll을 배포하고 있습니까?

+1

웹 사이트이므로 App_Code의 파일이 런타임에 컴파일되고 dll로 아무 것도 할 필요가 없다고 생각했습니다. .aspx 파일 내에서 배포하는 것이 무엇을 의미하는지 명확히 할 수 있습니까? – Tavis

+0

.aspx 파일을 응용 프로그램 루트에 배포하고 .dll을 bin 디렉터리에서 응용 프로그램 루트의 bin 디렉터리로 배포해야합니다. – Matten

+0

Selga의 대답을 참조하십시오. 의미하는 바를 설명합니다. – Matten

1

많은 경우 bin 디렉토리가 SVN에서 무시되므로 (좋은 이유로) 결국 로컬에서 (디버깅 할 때) VS가 사용자를 위해 App_Code.dll을 생성합니다. bin 디렉터리가 서버 컴퓨터에 배포되어 있는지 확인해야합니다. 그렇지 않은 경우 배포 웹 사이트 또는 ftp 복사본 등을 사용하여 솔루션을 배포 할 수있는 여러 가지 방법이 있습니다.

+0

bin 디렉토리가 로컬 또는 원격 시스템에 없습니다. 나는 이것이 웹 사이트가 아니라 웹 어플리케이션이되는 결과라고 생각합니다. 따라서 빌드 단계가 없습니다. App_Code의 파일은 런타임에 컴파일됩니다. 어쩌면 내가 여기 착각 한거야? – Tavis

+0

App_Code 폴더가 서버에 복사됩니까? 이것은 내가 왜 당신이 오류를 발견하지 못하는지에 관해서 생각할 수있는 유일한 것입니다. – szeliga

16

App_Code의 소스 파일을 마우스 오른쪽 단추로 클릭하고 "Build Action"속성을 "Compile"로 설정합니다.

+1

파일을 수동으로 새 웹 응용 프로그램 프로젝트로 옮긴 후 해결되었습니다. app_code의 각 파일에 대한 빌드 조치 특성이 컴파일 대신 내용으로 설정되었습니다. – Induster

+0

기본적으로 Visual Studio 2008에서는 CS 파일을 App_Code에 추가 할 때 빌드 작업을 내용으로 설정합니다. 기본 빌드 작업은 컴파일해야합니다. CS 파일을 App_Code에 추가하면 파일을 컴파일하기를 원할 것입니다. –

+0

그래, 특히 .cs 파일을 다시 사용하는 것이 매우 일반적인 작업 인 경우 매우 이상해 짐. – Induster

1

Build Action 속성이 App_Code 파일에서 컴파일로 설정되어 있습니까? 기본적으로 웹 응용 프로그램 프로젝트에는 없습니다.

관련 문제