C#在Web.config中引用程序集时,它看起来在哪里?

时间:2014-07-07 13:03:54

标签: c# .net-assembly

我的程序集显然已将服务器凭据硬编码到DLL中。那些凭据后来发生了变化。我的程序集列为:

<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.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            <add assembly="XYZ.Controls, Version=1.0.0.0, Culture=neutral, PublicKeyToken=96AD35993B90AC04"/>
    <add assembly="XYZ.DAL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=F38AD7B1AAE72AF0"/>
            <add assembly="XYZ.Universal, Version=1.0.0.0, Culture=neutral, PublicKeyToken=F38AD7B1AAE72AF0"/>
            <add assembly="XYZ.Security, Version=1.0.0.0, Culture=neutral, PublicKeyToken=F38AD7B1AAE72AF0"/>
            <add assembly="XYZ.Roles, Version=1.0.0.0, Culture=neutral, PublicKeyToken=F38AD7B1AAE72AF0"/>
            <add assembly="XYZ.Configuration, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9BA321F98F0715B4"/>
            </assemblies>

我的C驱动器上有几个XYZ.DAL副本,因为它在各种项目中使用。我如何准确知道我的项目正在使用哪个DDL文件,以便我可以爆炸该DLL并查看服务器凭据发生了什么?我会假设它会在项目BIN文件中查找,但它是空的。我假设它正在使用DLL上的一个副本,但是哪一个?

这是完整的堆栈跟踪:

       [Exception: Unable to Open Connection

服务器= XXXSQLDEV;数据库= XXXX.NET; UID = XXXAdmin; PWD = XXX 用户&#39; EIISAdmin&#39 ;.登录失败。    ITT.DAL.SQLHelpers.MSSQLHelper.StartExecuteReader(CommandType cmdType,String cmdText,DbParameter [] cmdParams)+951    ITT.DAL.Universal.PersonDAL.Get(String lanname)+210    C:\ Users \ eric.dahlenburg \ Documents \ Visual Studio 2010 \ Projects \ Property.NET \ Updates \ Default.aspx.cs中的PropertyUploader._Default.Page_Load(Object sender,EventArgs e):25    System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp,Object o,Object t,EventArgs e)+14    System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender,EventArgs e)+35    System.Web.UI.Control.OnLoad(EventArgs e)+99    System.Web.UI.Control.LoadRecursive()+50    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)+627

根据堆栈跟踪,我应该过滤什么?

谢谢,

埃里克

2 个答案:

答案 0 :(得分:0)

GAC包含系统上所有可用的DLL。引用DLL时,如果在GAC中找不到DLL,它将首先检查GAC,然后检查当前的BIN文件夹。

For more information regarding GAC look here

答案 1 :(得分:0)

在.Net中,您将看到按以下顺序从以下位置加载的程序集:

  1. GAC
  2. 运行应用程序的文件夹(您的BIN文件夹)
  3. 如果要加载任何本机程序集,则%PATH%将起作用。
  4. 可以找到更多信息here