2014-06-11 2 views
0

이전 asp.net 웹 양식을 상속 받았습니다 웹 사이트 응용 프로그램, 최근 프로젝트 중 하나 인 모든 코드를 app_code 폴더에서 별도의 라이브러리로 이동했습니다. 이것은 하나의 페이지를 제외하고는 크게 효과가있었습니다.인라인 코드에서 어셈블리 참조를 찾을 수 없습니다.

해당 페이지에 코드가없고 단지 은 VB.NET 코드을 사용하여 일부 작업을 수행합니다. 코드는 대신은을 App_Code의 DLL에 보이는 DLL의 유형을 찾고, 나는 새로 만든 라이브러리에서 유형을 구성 할 필요가 나는 다음과 같은 예외 얻을 :

유형 'CybersourceSecurity'를로드 할 수 없습니다를 어셈블리 'App_Code, 버전 = 0.0.0.0, 문화 = 중립, PublicKeyToken = null'에서.

<%@ Assembly Name="EA.Legacy" %> 
<%@ Import Namespace="EA.Legacy" %> 

아직도 내가 오류를 얻을 :

그래서 나는 가져 오기 네임 스페이스와 어셈블리 참조를 추가했다. 아래 코드 : 울부 짖는 소리

<%@ Page Language="VB" AutoEventWireup="false" EnableViewState="false" EnableViewStateMac="false" %> 
<%@ Assembly Name="EA.Legacy" %> 
<%@ Import Namespace="EA.Legacy" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html> 
<head runat="server"> 
     <title>Events and Adventures</title> 
     <meta http-equiv="Pragma" content="no-cache" /> 
     <meta http-equiv="Expires" content="-1" /> 
</head> 

<body> 
    <form id="form1" runat="server"> 
    <div> 

    <% 
     Dim ky As String 
     Dim fm As Collections.Specialized.NameValueCollection 
     Dim sb As New StringBuilder 
     Dim cybsSecurity As New EA.Legacy.CybersourceSecurity 
     Dim ValidSignature As Boolean = False 
     Try 

      <Do a bunch of stuff that never happens because we blow up first.> 

     Catch ext As Threading.ThreadAbortException 
      'ignore 

     Catch ex As Exception 
      eventsvb.PageError(Me, ex, "CybersourceReceipt") 

     Finally 
      sb = Nothing 
      cybsSecurity = Nothing 

     End Try 

    %> 

    </div> 
    </form> 
</body> 

</html> 

전체 스택 추적 :

[TypeLoadException이 : 어셈블리에서 유형 'CybersourceSecurity'를로드 할 수 없습니다 '을 App_Code, 버전 = 0.0.0.0, 문화 = 중립, PublicKeyToken = null이 System.Web.UI.Control.RenderChildrenInternal에서 '.] ASP.accounting_cybs_receipt_form_aspx .__ Renderform1 (HtmlTextWriter입니다 __w, 제어 parameterContainer) (지정된 HtmlTextWriter 작가, ICollection은 어린이) 131 System.Web.UI.HtmlControls.HtmlForm.RenderChildren (HtmlTextWriter입니다 작가) +315 System.Web.UI.HtmlControls.HtmlContainerControl.Render (HtmlTextWriter 작성기) +48 System.Web.UI.Control.RenderChildrenInternal (HtmlTextWriter 작성기, ICollection 하위) +246 System.Web.UI.Page.Render (HtmlTextWriter 작성기) 40 System.Web.UI.Page.ProcessRequestMain (부울 includeStagesBeforeAsyncPoint, 부울 includeStagesAfterAsyncPoint) 5290

[편집] 참고 :이 코드는 VS에서 잘 작동 나는 더와 그것을 통해 단계 수 예외는 웹 서버에서만 발생합니다.

+0

같은 폴더에 새 페이지를 만드는 경우 해당 새 페이지의 코드 숨김에서 'CybersourceSecurity' 인스턴스를 만들 수 있습니까? –

+0

예, 코드 뒤에 CyberSourceSecurity 클래스를 사용하는 많은 페이지가 있습니다. 나는 Visual Studio에서이 오류가 발생하지 않도록 추가하는 것을 잊어 버렸습니다. 코드를 단계별로 실행할 수 있으며 웹 서버에서만 제대로 작동합니다. – Anthony

+0

웹 사이트 "프로젝트"또는 웹 응용 프로그램 프로젝트의이 부분입니까? –

답변

0

나는 그것을 알아 냈다, 열쇠는 VS에서 작동하고 서버가 아니라 이전에 사이트가 완전히 aspx 페이지를 포함한 dll로 컴파일되었다. 준비 사이트에서 문제를 재현 한 다음 bin 폴더를 지우고 페이지가 작동하기 시작했습니다. 그래서 프로덕션 환경의 bin 폴더를 살펴본 후 aspx 페이지와 같은 이름의 dll을 발견하고 삭제했습니다. 그리고 모든 것이 세계와 잘 어울립니다. 필자는 새로운 빌드를 생산에 적용 할 때마다 더 이상 프로젝트의 일부가 아닌 것을 제거해야합니다.

0

그것이 로컬 참조를 사용 되었기 때문에 VS 작업을하지만 서버에 이러한 참조가없는거야 괜찮아, 문제를 해결하기 위해 당신은 단지에 따라 아래의 명령어 : Visual Studio에서

1 단계참고 문헌에 프로젝트 솔루션을 클릭 폴더 당신이 잠을 프로젝트로를 포함하고 을 클릭합니다은 A 참조에 enter image description here

2 단계 이제 마우스 오른쪽 버튼으로 클릭에서 operties, 당신은 다음, 사실 이제 enter image description here

저장하고 솔루션을 다시

로 설정의 로컬 복사 옵션이 false로 설정되어 표시되는 서버에 게시하고 그게 다에요.

+0

불행히도이 사이트는 웹 응용 프로그램 프로젝트가 아니기 때문에 참조 폴더가없고 모든 dll이 기본적으로 bin 디렉토리에 복사됩니다. 또한 참조가 다른 페이지에서 사용되므로 참조가 올바르게되어 있음을 알고 있지만 감사합니다. – Anthony

관련 문제