当使用IIS Express运行ASP.NET网站时,程序集在哪里?

14
我知道在 ASP.NET 网站下进行动态编译时,代码后置文件会被编译成程序集。当运行 IIS Express 时,这些 DLL 文件存储在哪里?仅存储在内存中吗?我没有在 bin 文件夹或 temp 目录(C:\Windows\Microsoft.NET\Framework[64]\v4.0.30319)中看到它们。通常情况下,我会在发布时预编译生成它们。但在这种情况下,我看不到它们。
我有什么遗漏吗?
谢谢。
更新:
我确实在 C:\Users\Administrator\AppData\Local\Temp\Temporary ASP.NET Files\root 下看到了 dll 文件。
因此我认为它们是存储在那里的?这是 Visual Studio 2012,.NET 4.5。

我在bin文件夹中看到了像EntityFramework和其他微软的DLL,但我没有看到任何可以代表我拥有的三个页面(About.aspx,Contact.aspx,Default.aspx)的DLL。它们都是在Visual Studio中创建默认的“新网站”时生成的默认页面。 - SaltProgrammer
2个回答

6

4
谢谢,但我没有在Bin文件夹中看到它。它可能在这里吗?C:\Users\Administrator\AppData\Local\Temp\Temporary ASP.NET Files\root - SaltProgrammer
尝试在这里: C:\ Users <user_name> \ AppData \ Local \ assembly \。 我知道,当我在浏览器中运行ClickOnce应用程序时,dll存储在那里。但我认为这是针对不在IIS中运行的应用程序。此外,请查看inetpub下面。这变得有趣了... - T.S.
6
临时文件存储在此位置:“C:\Users<user>\AppData\Local\Temp\Temporary ASP.NET Files\root"。 - Alberto Spelta

3
很可能不是您的bin文件夹出了问题。所有内容都会被复制到一组临时文件夹中。
我为这个问题写了一个方法 -
private string[] GetAssembly(string[] assemblyNames)
{
    string [] locations = new string[assemblyNames.Length];

    for (int loop = 0; loop <= assemblyNames.Length - 1; loop++)       
    {
         locations[loop] = AppDomain.CurrentDomain.GetAssemblies()
           .Where(a => !a.IsDynamic && a.ManifestModule.Name == assemblyNames[loop])
           .Select(a => a.Location)
           .FirstOrDefault();
    }
    return locations;
}

请看我关于这个主题写的文章 - http://nodogmablog.bryanhogan.net/2015/05/finding-the-location-of-a-running-assembly-in-net/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接