【发布时间】:2015-05-11 08:24:57
【问题描述】:
不知道该取什么名字。但这就是我所经历的。
我使用 VS 2013 的 Publish 选项部署了一个 Asp.net Web 应用程序。该应用程序使用分层架构,并具有 BAL、DAL 等。一两天后,发生了微小的变化在要部署的 BAL 中。由于更改仅在 BAL 中,所以我只是构建了该 BAL 项目并将 BAL 的 DLL(没有发布整个 Web 应用程序)部署到我的 Web 应用程序的 bin ,并且有些事情开始因 Method not found 异常而中断,但是方法在那里。我收到的例外情况如下。
消息:调用目标抛出异常。
堆栈跟踪:System.Reflection.TargetInvocationException:异常 已被调用的目标抛出。 ---> System.MissingMethodException:找不到方法: 'System.Collections.Generic.List
1 BusinessLayer.Dealer.Dealer_BAL.SelectStoreList(Int32, System.Nullable1,System.Nullable`1)'。在 UserInterfaceLayer.DataViews.Dealer.DealerStore.Select(Int32 Mst_Dealer_Id, Int32 userId, Int32 userType) --- 内部结束 异常堆栈跟踪 --- 在 System.RuntimeMethodHandle.InvokeMethod(对象目标,对象 [] 参数,签名 sig,布尔构造函数)在 System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(对象 obj, Object[] 参数,Object[] 参数)在 System.Reflection.RuntimeMethodInfo.Invoke(对象 obj,BindingFlags invokeAttr、Binder binder、Object[] 参数、CultureInfo 文化) 在 System.Web.UI.WebControls.ObjectDataSourceView.InvokeMethod(ObjectDataSourceMethod 方法,布尔 disposeInstance,对象和实例)在 System.Web.UI.WebControls.ObjectDataSourceView.ExecuteSelect(DataSourceSelectArguments 论据)在 System.Web.UI.DataSourceView.Select(DataSourceSelectArguments 参数,DataSourceViewSelectCallback 回调)在 System.Web.UI.WebControls.DataBoundControl.PerformSelect() 在 Telerik.Web.UI.GridTableView.PerformSelect() 在 System.Web.UI.WebControls.BaseDataBoundControl.DataBind() 在 Telerik.Web.UI.GridTableView.DataBind() 在 Telerik.Web.UI.RadGrid.DataBind() 在 Telerik.Web.UI.RadGrid.AutoDataBind(GridRebindReason rebindReason) 在 Telerik.Web.UI.RadGrid.Rebind() 在 UserInterfaceLayer.UC.LeaseApplication.UC_PrimaryLeaseInfo.SetControlValue(V2 v2) 在 UserInterfaceLayer.AddLeaseApplication.TempLeaseAppBind(String TempLeaseId) 在 UserInterfaceLayer.AddLeaseApplication.Page_Load(对象发送者, EventArgs e) 在 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(对象发送者, EventArgs e) 在 System.Web.UI.Control.OnLoad(EventArgs e) 在 System.Web.UI.Control.LoadRecursive() 在 System.Web.UI.Page.ProcessRequestMain(布尔值 includeStagesBeforeAsyncPoint,布尔型 includeStagesAfterAsyncPoint)
下面是来自 IL DASM 的片段,显示该 dll 中确实存在该方法。
让我怀疑的是那个褪色的粉色盒子,那些纯粉色盒子的方法和上图中的褪色方法有什么区别?
为了提供更多信息并再次回顾,在第二次部署中:
我还没有发布整个 Web 应用程序。
我只部署了一个 BAL dll。
已部署的 BAL dll 构建在与之前构建整个应用程序不同的计算机上。可能这可能是不确定的原因。
【问题讨论】:
-
您对 BAL dll 所做的更改是什么?重命名/删除任何方法?你确定这个 BAL dll 是从 bin 文件夹加载的吗?不是来自 GAC 等?
-
那些纯粉色框方法和上图中褪色的方法有什么区别? stackoverflow.com/questions/8791743/…
-
@Kurubaran 这肯定是从 bin 加载的。没有删除任何方法,即使没有找到的方法也存在,如 ILDASM 的片段所示。
-
@MaheshKava,谢谢。
-
即使您更改了 dll,您也需要重新启动 IIS。您可以尝试重新启动 iis 并检查是否有效吗?
标签: c# asp.net .net visual-studio-2013 deployment