c# - 无法写入输出文件 'c:\Windows\Temp\HibernatingRhinos.Profiler.Appender.NHibernate3Logger.dll' -- 'Access is denied. '

标签 c# iis-7 nhprof

我们在 IIS7 中托管了一个网站和两个服务,分别是 UAT/STG 和 LIVE 自更新 NHProf 以来,暂存站点和 UAT 站点已因以下错误而终止。

net4exception: System.InvalidOperationException: Could not write to output file 'c:\Windows\Temp\HibernatingRhinos.Profiler.Appender.NHibernate3Logger.dll' -- 'Access is denied. '
  at HibernatingRhinos.Profiler.Appender.Util.GenerateAssembly.CompileInternally(String fileName, List`1 sources, HashSet`1 assemblies, HashSet`1 defineSymbols, String compilerVersion)
  at HibernatingRhinos.Profiler.Appender.Util.GenerateAssembly.CompileAssembly(List`1 sources, HashSet`1 assemblies, HashSet`1 defineSymbols, String assemblyFileName)
net35exception: System.InvalidOperationException: Could not write to output file 'c:\Windows\Temp\HibernatingRhinos.Profiler.Appender.NHibernate3Logger.dll' -- 'Access is denied. '
  at HibernatingRhinos.Profiler.Appender.Util.GenerateAssembly.CompileInternally(String fileName, List`1 sources, HashSet`1 assemblies, HashSet`1 defineSymbols, String compilerVersion)
  at HibernatingRhinos.Profiler.Appender.Util.GenerateAssembly.CompileAssembly(List`1 sources, HashSet`1 assemblies, HashSet`1 defineSymbols, String assemblyFileName)

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.InvalidOperationException: net4exception: System.InvalidOperationException: Could not write to output file 'c:\Windows\Temp\HibernatingRhinos.Profiler.Appender.NHibernate3Logger.dll' -- 'Access is denied. '
  at HibernatingRhinos.Profiler.Appender.Util.GenerateAssembly.CompileInternally(String fileName, List`1 sources, HashSet`1 assemblies, HashSet`1 defineSymbols, String compilerVersion)
  at HibernatingRhinos.Profiler.Appender.Util.GenerateAssembly.CompileAssembly(List`1 sources, HashSet`1 assemblies, HashSet`1 defineSymbols, String assemblyFileName)
net35exception: System.InvalidOperationException: Could not write to output file 'c:\Windows\Temp\HibernatingRhinos.Profiler.Appender.NHibernate3Logger.dll' -- 'Access is denied. '
  at HibernatingRhinos.Profiler.Appender.Util.GenerateAssembly.CompileInternally(String fileName, List`1 sources, HashSet`1 assemblies, HashSet`1 defineSymbols, String compilerVersion)
  at HibernatingRhinos.Profiler.Appender.Util.GenerateAssembly.CompileAssembly(List`1 sources, HashSet`1 assemblies, HashSet`1 defineSymbols, String assemblyFileName)

在临时文件夹中有一些 dll 的 但它们都是随机命名的...除了 NHProf 库。

关于如何阻止这种情况的任何想法?

最佳答案

创建 list 文件 (app.manifest) 并更改 <requestedExecutionLevel level="asInvoker" uiAccess="false" /><requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> .现在应该可以了。

大多数代码示例:

    <?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <!-- UAC Manifest Options
            If you want to change the Windows User Account Control level replace the 
            requestedExecutionLevel node with one of the following.

        <requestedExecutionLevel  level="asInvoker" uiAccess="false" />
        <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
        <requestedExecutionLevel  level="highestAvailable" uiAccess="false" />

            Specifying requestedExecutionLevel node will disable file and registry virtualization.
            If you want to utilize File and Registry Virtualization for backward 
            compatibility then delete the requestedExecutionLevel node.
        -->
        <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
      </requestedPrivileges>
    </security>
  </trustInfo>

  <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
    <application>
      <!-- A list of all Windows versions that this application is designed to work with. Windows will automatically select the most compatible environment.-->

      <!-- If your application is designed to work with Windows 7, uncomment the following supportedOS node-->
      <!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>-->

    </application>
  </compatibility>

  <!-- Enable themes for Windows common controls and dialogs (Windows XP and later) -->
  <!-- <dependency>
    <dependentAssembly>
      <assemblyIdentity
          type="win32"
          name="Microsoft.Windows.Common-Controls"
          version="6.0.0.0"
          processorArchitecture="*"
          publicKeyToken="6595b64144ccf1df"
          language="*"
        />
    </dependentAssembly>
  </dependency>-->

</asmv1:assembly>

关于c# - 无法写入输出文件 'c:\Windows\Temp\HibernatingRhinos.Profiler.Appender.NHibernate3Logger.dll' -- 'Access is denied. ',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14506973/

相关文章:

c# - 在 MSTest 中忽略从通用基类继承的测试类

c# - 当 GC 开始运行时,我如何获得信号?

c# - 如何使用 .Net Core 在 Linux 上从同一网络的远程计算机获取 mac 地址

windows - 请求的 IIS 文件授权失败

nhibernate - 使用 NHibernate 提交事务后的故障安全清理(集合)警告

c# - 如何在 C# 中将固定字节/char[100] 转换为托管 char[]?

asp.net-mvc-3 - MVC3 :Maximum request length exceeded

php - 子文件夹中的 IIS 文档根目录

nhibernate - NHibernate profiler的免费替代品?

java - 为 Hibernate 设置 HProf