2009-03-22 2 views
0

다른 각도에서이 질문을 해봅니다.asp.net 웹 사이트 및 기본 네임 스페이스 및 LINQ Datacontext 파트 2

"웹 사이트"모델을 사용하여 aspx 페이지가 브라우저에서 렌더링 될 때마다 임시 ASP.NET 파일에서 무작위 어셈블리가 'on-the-fly'로 만들어집니다. Reflector에서 어셈블리를 분석하면 주어진 .aspx 파일에 대해 생성 된 클래스가 "ASP"네임 스페이스 아래에 있음을 알 수 있습니다.

따라서 빈 "Temporary ASP.NET Files"디렉터리로 시작하여 VS2008에서 ASP.NET "웹 사이트"를 열고 기본 페이지를 시작했습니다. 즉시 나는 임의의 디렉토리가 그 폴더 안에 생성 된 것을 관찰했다. 경로를 따라 가면서 App_Code.1lywsqqz.dll과 App_Web_iohekame.dll이라는 두 개의 DLL을 만들었습니다. 웹 사이트의 모든 .aspx 페이지가 App_Web dll로 컴파일되고 App_Code 폴더의 모든 내용이 App_Code.dll로 컴파일된다고 가정합니다.

그래서 내 App_Code C#/VB.net 파일이 "ASP"네임 스페이스 아래에 있고 내 App_Web 파일이 "ASP"네임 스페이스 아래에 만들어지면 "Could not load type 'ASP 오류가 발생합니다. NothwindDataContext ' "NorthwindDataContext'?

누군가가"당신은 App_Code 폴더에 네임 스페이스를 필요로하지 않는다 ",하지만 난없이 그것을 시도하고 여전히 형식을로드 할 수 없습니다"얻을 말했다.

는 그래서이 사이에 무슨 일 App_Code 폴더, 나머지 사이트 및 네임 스페이스?

편집 : 내 LinqDataSource는 내 .aspx에 있습니다. 파일 :

<asp:LinqDataSource ID="LinqDataSource1" runat="server" 
    ContextTypeName="NothwindDataContext" EnableUpdate="True" 
    TableName="Categories"> 
</asp:LinqDataSource> 

"NorthwindDataContext"또는 "ASP.NorthwindDataContext"도 작동하지 않습니다.

답변

4

App_Code의 형식 C# 파일과 마찬가지로 C# 소스 파일은 구체적으로 namespace Name {...}으로 선언하지 않는 한 특정 C# 파일과 동일하게 지정되지 않습니다. 따라서 App_Code에 선언 된 클래스 MyClass은 정규화 된 유형 이름 MyClass을 갖습니다. 그냥.

Web.config에서 참조 할 수 있습니다. "MyClass, App_Code".

사이드 노트 : 당신이 App_Code에 DBML를 사용하고, 생성 된 클래스의 네임 스페이스는 해당 파일에 정의되어 있습니다 (DBML 파일이 열려있을 때 속성 창을보고). 해당 파일에 네임 스페이스를 지정하면 당연히 클래스가 해당 네임 스페이스에 정의됩니다. 이것은 위에서 말한 것과 모순되지 않습니다. 문제는 LINQ 데이터 컨텍스트 생성기가 파일을 처리하고 특정 네임 스페이스의 클래스를 정의한다는 것입니다.

+0

그래서 App_Code의 모든 클래스에 대해 Web.config에 항목이 있어야합니까? 완벽한 예제 web.config 예제를 제공 할 수 있습니까? 감사. – Robert4Real

+0

아니요! 전혀. 방금 네가 필요로 할 때를 대비해 *. –

+0

또한 내 .aspx에 "# import ..."문이 필요합니까? – Robert4Real