Nếu đó là đồng bằng-jane ASP.NET trang web, và assembly không nằm trong thư mục bin của trang web hoặc trong GAC của máy chủ (và không có gì có nhiều fishy trong web.config), có lẽ trang web là một trang con của một số loại và một trong những trang cao hơn có chứa tham chiếu trong thư mục bin (hoặc một cái gì đó có nhiều trong web.config của nó, vì các trang con/thư mục kế thừa web.configs của bố mẹ chúng) ?
Bây giờ, nếu bạn có môi trường nơi tệp đang được tải chính xác (và có vẻ như bạn đang làm), bạn có thể chỉ cần hỏi .NET ở đâu.dll đến từ và hiển thị mà thay vào đó, ví dụ:
Assembly a = Assembly.Load("Microsoft.VisualStudio.Shell, Version=2.0.0.0, "
+ "PublicKeyToken=b03f5f7f11d50a3a, Culture=Neutral");
Console.WriteLine(a.Location);
sẽ nạp một assembly và hiển thị vị trí trên đĩa của nó, đầu ra của tôi là: C:\Windows\assembly\GAC_MSIL\Microsoft.VisualStudio.Shell\2.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.Shell.dll
Nếu đó là dưới "C: \ Windows \ lắp ráp \ "bạn biết nó trong GAC. Bạn cũng có thể thực hiện việc này mà không cần một cuộc gọi Assembly.Load nếu bạn đã tham chiếu đến assembly, bạn có thể liệt kê các assembly được nạp vào app.domain hiện tại và chỉ cần in ra (hoặc trả về một điều khiển theo nghĩa đen, hoặc Response.Write, vv ...) thuộc tính .Location của chúng là gì.
Edit: Mã cho rằng trông giống như sau:
foreach (Assembly a in AppDomain.CurrentDomain.GetAssemblies())
{
Console.WriteLine(a.GetName().FullName);
Console.WriteLine(a.Location);
Console.WriteLine();
}
Edit: Trên một môi trường tin tưởng đầy đủ, mã (giao diện điều khiển ứng dụng) sau đây sẽ liệt kê GAC và viết ra mỗi hội đồng, cần phải dễ dàng sửa đổi nó thành ứng dụng ASP.NET, nhưng tôi không chắc liệu nó có hoạt động trong môi trường ít tin cậy hơn không (chỉ đoán ở đây, bạn có thể may mắn):
static void ProcessFile(string file)
{
try
{
Assembly a = Assembly.LoadFile(file);
Console.WriteLine(a.GetName().FullName);
}
catch { /* do nothing */ }
}
static void ProcessFolder(string folder)
{
foreach (string file in Directory.GetFiles(folder))
{
ProcessFile(file);
}
foreach (string subFolder in Directory.GetDirectories(folder))
{
ProcessFolder(subFolder);
}
}
static void Main(string[] args)
{
ProcessFolder(@"C:\Windows\Assembly");
}
@effkey - bạn có quản lý để giải quyết vấn đề này không? – Kev
nop; Tôi không đủ thẩm quyền để; thay vì tôi đã tải xuống các tệp .dll từ torrents (cùng một phiên bản) và chúng hoạt động. Tôi vẫn không hiểu từ nơi ASP .NET được chọn lên DLLz nếu họ không có trong GAC. – effkay