我继承了一个旧的asp.net Webform WebSite应用程序,这是我最近的项目之一,我将所有代码从app_code文件夹移到了一个单独的库中。除了一页以外,这已经很好了。
该页面没有任何代码,仅使用嵌入式VB.NET代码来完成某些工作。该代码需要从我创建的新库中构造一个类型,而不是在dll中查找类型,而是在App_Code dll中查找它,并且出现以下异常:
无法从程序集“ App_Code,版本= 0.0.0.0,文化=中性,PublicKeyToken =空”中加载类型“ CybersourceSecurity”。
因此,我添加了导入名称空间和程序集引用:
<%@ 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:无法从程序集'App_Code,版本= 0.0.0.0,文化=中性,PublicKeyToken =空'中加载类型'CybersourceSecurity'。] ASP.accounting_cybs_receipt_form_aspx .__ Renderform1(HtmlTextWriter __w,控件parameterContainer)在System.Web.UI中。 Control.RenderChildrenInternal(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 writer,ICollection子代)+246 System.Web.UI.Page.Render(HtmlTextWriter writer)+40 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)+5290
[编辑]注意:此代码在VS中工作正常,我可以毫无例外地逐步执行它,它仅在Web服务器上发生。
我弄清楚了,关键是它可以在VS中工作,而不是在服务器上工作,曾经有一段时间该站点被完全编译成包含aspx页面的dll。我能够在登台站点上再现该问题,然后清理bin文件夹,该页面开始工作。因此,我查看了生产环境中的bin文件夹,发现了一个与aspx页面同名的dll,我将其删除了,一切都很好。我的收获:每当我们将一个新的版本推向生产阶段时,我们都需要清除项目中不再包含的所有内容。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句