문제

이 질문을 다른 각도에서 물어 보겠습니다.

"웹 사이트"모델을 사용하여 브라우저에서 ASPX 페이지가 렌더링 될 때마다 임시 ASP.NET 파일에서 임의의 어셈블리가 '온- 날짜'가 생성된다는 것을 알았습니다. 리플렉터에서 어셈블리를 분석하면 주어진 .aspx 파일에 대해 생성 된 클래스가 "ASP"네임 스페이스 아래에 있음을 보여줍니다.

따라서 빈 "임시 ASP.NET 파일"디렉토리로 시작하여 vs2008에서 ASP.NET "웹 사이트"를 열고 기본 페이지를 시작했습니다. 즉시 해당 폴더 내부에서 임의의 디렉토리가 생성되는 것을 관찰했습니다. 길을 따라 가면서 나는 2 개의 dlls가 생성 된 것을 발견했다 : App_code.1lywsqqz.dll 및 app_web_iohekame.dll. 웹 사이트의 모든 .aspx 페이지가 app_web dll로 컴파일되고 app_code 폴더의 모든 것이 app_code.dll로 컴파일된다고 가정합니다.

따라서 APP_Code C#/vb.net 파일이 "ASP"네임 스페이스 아래에 있고 APP_Web 파일이 "ASP"네임 스페이스에서 생성되면 여전히 "오류가 발생할 수 없습니다"유형을로드 할 수 없습니다.

누군가는 "App_Code 폴더에 네임 스페이스가 필요하지 않다"고 말했지만 "NorthwindDataconText 유형을로드 할 수 없다"고 생각하지 않고 시도했습니다.

그렇다면 App_code 폴더, 사이트의 나머지 부분 및 네임 스페이스간에 무슨 일이 일어나고 있습니까?

편집 : 여기 내 .aspx 파일의 LinqDatasource가 있습니다.

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

"Northwinddatacontext"또는 "asp.northwinddatacontext"는 작동하지 않습니다.

도움이 되었습니까?

해결책

유형 App_Code C# 소스 파일은 C# 파일과 마찬가지로 구체적으로 선언하지 않는 한 특정 네임 스페이스에 넣지 않습니다. namespace Name {...} 주변. 그래서 수업 MyClass 선언 App_Code 자격을 갖춘 유형 이름이 있습니다 MyClass. 그냥.

당신은 그것을 참조 할 수 있습니다 Web.config 처럼: "MyClass, App_Code".

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top