我在IIS 7.5上使用ELMAH的WCF(.Net 3.5)站点出现问题。这是异常消息:
System.Security.SecurityException: Request for the permission of type 'System.Web.AspNetHostingPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.
为了验证它是IIS7.5上的WCF和ELMAH的组合,我在VS2008中创建了一个新的WCF服务项目,并在IIS 7.5站点下创建了一个新的应用程序。我发布了它并确保它没问题。然后我添加了ELMAH DLL。还好。然后将ELMAH configSection引用添加到Web.config。还好。然后我将ELMAH的东西添加到http.andb中的httpHandlers和httpModules(是的,我知道这不适用于7.5)。还好。然后我将它添加到system.webServer:
中的处理程序和模块中<handlers>
:
<add name="Elmah" verb="POST,GET,HEAD"
path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
<modules>
:
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/>
<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
<add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />
然后我得到了安全例外。我没有进行其他配置更改。
一切都可以使用VS dev网络服务器。开发机器是2008 R2 x64,安装了VS 2008 SP1。 WCF服务是为x86构建的(因为原始项目是)。 ELMAH是.Net 3.5 x86版本。 IIS7.5应用程序池设置为允许32位。
知道我需要做些什么来实现这个目标吗?
答案 0 :(得分:2)
就我而言,我必须在应用程序池中设置“加载User Profile = True”才能使其正常工作。
步骤:
从应用程序池列表中,转到“高级设置”,“过程模型”部分,并将“加载用户配置文件”设置为“True”。
答案 1 :(得分:0)
您必须在IIS管理器中为您的虚拟Web目录添加托管处理程序。
elmah.axd
Elmah.ErrorLogPageFactory, Elmah
Anything you want it to be identified with.
注意:每次从Visual Studio发布更改时,都将删除此设置。所以你必须再次添加它。