我已经在我的(Cassini)开发服务器上成功使用了ELMAH,感到非常满意。但是现在我正在尝试将所有内容移动到我的生产服务器(IIS7),这个美好的时光看起来就要结束了。
我已经通过"IIS7的陷阱",但是文档中应该更好地强调,如果我只使用内存日志,那么它可以工作。
然而,我正在尝试让它使用SQL Server日志(就像我在开发系统上做的那样),但是我遇到了以下错误:
"拒绝对对象ELMAH_GetErrorsXml的EXECUTE权限"
好吧,我知道如何授予数据库权限,但我真的很难理解需要授予哪个用户以及哪些存储过程/表的访问权限。
让我感到困惑的是,在我的开发服务器上,我没有像这样做任何事情就使它正常运行。我唯一能看到的区别是,在我的开发服务器上,它似乎连接为NT AUTHORITY\IUSR,而在我的生产服务器上,它似乎连接为NT AUTHORITY\NETWORK SERVICE。(它只是使用可信连接,所以我没有显式地配置它 - 我认为这与Web服务器有关)。更新:我后来确定,因为我正在使用Cassini,它实际上是作为管理员(即我)而不是IUSR登录,这就解释了为什么我没有遇到任何权限问题。
在我的开发服务器上,IUSR帐户是公共数据库角色的成员,并且可以访问所需的数据库(同样是作为“public”)。没有明确授予对象级权限。[请参见上面的更新 - 这是无关紧要的]。
在我的生产服务器上,我已经以完全相同的方式添加了NETWORK SERVICE(公共数据库角色,作为“public”对数据库的明确访问)。然而,我得到了这个权限错误。为什么?!!【请参见上面的更新 - 我之所以没有获得权限错误的唯一原因是我作为管理员运行】。
我已经通过"IIS7的陷阱",但是文档中应该更好地强调,如果我只使用内存日志,那么它可以工作。
然而,我正在尝试让它使用SQL Server日志(就像我在开发系统上做的那样),但是我遇到了以下错误:
"拒绝对对象ELMAH_GetErrorsXml的EXECUTE权限"
好吧,我知道如何授予数据库权限,但我真的很难理解需要授予哪个用户以及哪些存储过程/表的访问权限。
让我感到困惑的是,在我的开发服务器上,我没有像这样做任何事情就使它正常运行。我唯一能看到的区别是,在我的开发服务器上,它似乎连接为NT AUTHORITY\IUSR,而在我的生产服务器上,它似乎连接为NT AUTHORITY\NETWORK SERVICE。(它只是使用可信连接,所以我没有显式地配置它 - 我认为这与Web服务器有关)。更新:我后来确定,因为我正在使用Cassini,它实际上是作为管理员(即我)而不是IUSR登录,这就解释了为什么我没有遇到任何权限问题。
在我的开发服务器上,IUSR帐户是公共数据库角色的成员,并且可以访问所需的数据库(同样是作为“public”)。没有明确授予对象级权限。[请参见上面的更新 - 这是无关紧要的]。
在我的生产服务器上,我已经以完全相同的方式添加了NETWORK SERVICE(公共数据库角色,作为“public”对数据库的明确访问)。然而,我得到了这个权限错误。为什么?!!【请参见上面的更新 - 我之所以没有获得权限错误的唯一原因是我作为管理员运行】。
当然,如果它只是在本地工作的“幸运”,我需要知道授予访问权限的哪些SPs/表。 我猜测应该是所有3个SP和不包括表,但最好(再次)查看一些明确说明的文档。