.NETFramework 3.5 에서 EntityFramwork 사용 프로젝트를 만들었을때 아래와 같은 메시지를 받을 때가 있음.


컴파일러 오류 메시지: CS0012: 'System.Data.Objects.DataClasses.EntityObject' 형식이 참조되지 않은 어셈블리에 정의되었습니다. 'System.Data.Entity, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' 어셈블리에 참조를 추가해야 합니다.



.NET 3.5 설정의 Web.Config  assemblies 섹션에 아래의 어셈블리 참조가 기본값으로 들어가지 않기 때문입니다.

<add assembly="System.Data.Entity, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>

다음과 같이 넣어 주세요.

    <!-- 
            컴파일된 페이지에 디버깅 기호를 삽입하려면
        compilation debug="true"를 설정하십시오. 이렇게 설정하면
        성능에 영향을 주므로 개발하는 동안에만
        이 값을 true로 설정하십시오.
    -->
    <compilation debug="true">
      <assemblies>
        <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        <add assembly="System.Web.Abstractions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        <add assembly="System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        <add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        <add assembly="System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
        <add assembly="System.Data.Entity, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
      </assemblies>
    </compilation>

 
저작자 표시
신고

이 글을 Twitter / Facebook 에 공유하기
이 글이 유익하다면 아래의 트위터 버튼을 눌러 공유해 주시거나, 페이스북 "좋아요" 버튼을 눌러 주세요.

   


Posted by 반더빌트
ASP.NET 에서 '이벤트 뷰어'의 목록 중에 [스레드가 취소 되었습니다. Thread was being aborted] 로그를 만나는 때가 있습니다.

이 예외는 Response.Redirect , Server.Transfer 를 사용 했을때 발생하는 알려진 문제 입니다.


다음과 같은 시도를 했을 때 발생하는 예외인데요

FormsAuthentication.SignOut();
Response.Redirect("Login.aspx");


아래와 같은 로그가 남게 됩니다.

Source        : mscorlib
Method        : AbortInternal
Date        :
Time        :
Computer    :
Error        : Thread was being aborted.
Stack Trace    :    at System.Threading.Thread.AbortInternal()
   at System.Threading.Thread.Abort(Object stateInfo)
   at System.Web.HttpResponse.End()
   at System.Web.HttpResponse.Redirect(String url, Boolean endResponse)
   at System.Web.HttpResponse.Redirect(String url)


해결방법으로는 Server.Execute 를 사용, 또는

Response.Redirect ("nextpage.aspx", false);

를 사용하는 것 입니다.


URL 다음에 boolean 파라미터는 현재 페이지를 종료할 것이냐를 의미하는 것으로, 종료하지 않음  파라미터를 전달하여 스레드가 종료되지 않도록 알립니다.

        //
        // Summary:
        //     Redirects a client to a new URL. Specifies the new URL and whether execution
        //     of the current page should terminate.
        //
        // Parameters:
        //   url:
        //     The location of the target.
        //
        //   endResponse:
        //     Indicates whether execution of the current page should terminate.
        //
        // Exceptions:
        //   System.ArgumentNullException:
        //     url is null.
        //
        //   System.ArgumentException:
        //     url contains a newline character.
        //
        //   System.Web.HttpException:
        //     A redirection is attempted after the HTTP headers have been sent.
        //
        //   System.ApplicationException:
        //     The page request is the result of a callback.
        public void Redirect(string url, bool endResponse);


다음의 링크는 MS , PRB 주소 입니다.
PRB: ThreadAbortException Occurs If You Use Response.End, Response.Redirect, or Server.Transfer


스레드는 실 이야!.


신고

이 글을 Twitter / Facebook 에 공유하기
이 글이 유익하다면 아래의 트위터 버튼을 눌러 공유해 주시거나, 페이스북 "좋아요" 버튼을 눌러 주세요.

   


Posted by 반더빌트


티스토리 툴바