首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IIS7.5 ApplicationPoolIdentity权限

IIS7.5 ApplicationPoolIdentity权限
EN

Stack Overflow用户
提问于 2015-07-20 21:21:42
回答 1查看 1.4K关注 0票数 1

我在正确设置AppPoolIdentity的权限时遇到了一些困难。

失败请求日志中显示的错误是:

代码语言:javascript
复制
ModuleName="IIS Web Core", Notification="BEGIN_REQUEST", HttpStatus="500", HttpReason="Internal Server Error", HttpSubStatus="0", ErrorCode="The I/O operation has been aborted because of either a thread exit or an application request.
 (0x800703e3)", ConfigExceptionInfo=""

我认为这是一个权限问题,因为将AppPoolIdentity更改为应用程序池的LocalSystem可以使网站中的所有内容都正常工作。当ApplicationPoolIdentity设置为AppPoolIdentity时,上面显示的错误就是我所收到的。我已经使用以下语法命名了应用程序池标识:

代码语言:javascript
复制
IIS APPPOOL\<app_pool_name>

我已证实:

  1. 设置权限时,我使用的是正确的app_pool_name。(在设置权限时使用check,这意味着Windows正在查找用户。)
  2. wwwroot和oracle客户端目录具有允许应用程序池标识读取和执行文件的权限。
  3. 在IIS中启用匿名身份验证,并将其设置为使用应用程序池标识。

是否需要授予我错过的其他目录的权限?还是我完全错过了其他的问题?

对于一些额外的背景,我使用Windows 2008 R2和IIS7.5。

提前感谢!

编辑:我已经完成了一些跟踪,这要归功于Peter给出的建议,并且发现我缺少了一些权限。我缺少的权限是:

  • 对HKLM\软件的完全控制\Microsoft\SystemCertificates\
  • 对HKU{GUID}\Software\Policies\Microsoft\SystemCertificates\的全控制
  • 对HKLM\SOFTWARE\Microsoft\EnterpriseCertificates\的全控制
  • 读到HKLM\System\CurrentControlSet\services\eventlog\Security\
  • 对C:\Windows\SysWOW64\config\systemprofile\AppData\的全控制

在修改这些权限之后,我的应用程序将使用自定义应用程序错误登录到Windows事件日志。(基本上,自定义应用程序错误告诉我它无法建立到数据库的连接。)请记住,如果我以LocalSystem的身份运行,而不是IIS中的AppPoolIdentity用户,一切都可以工作。再次使用Process,我发现Oracle正在登录到一个sqlnet.log文件。在这个文件中,它显示:

代码语言:javascript
复制
Fatal NI connect error 12631, connecting to:
 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=[DB IP ADDRESS])(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=[SERVICE NAME])(CID=(PROGRAM=C:\Windows\SysWOW64\inetsrv\w3wp.exe)(HOST=[WEB APPLICATION SERVER NAME])(USER=[APP POOL IDENTITY USER]))))

  VERSION INFORMATION:
    TNS for 32-bit Windows: Version 11.2.0.1.0 - Production
    Windows NT TCP/IP NT Protocol Adapter for 32-bit Windows: Version 11.2.0.1.0 - Production
  Time: 21-JUL-2015 16:28:00
  Tracing not turned on.
  Tns error struct:
    ns main err code: 12631

TNS-12631: Username retrieval failed
    ns secondary err code: 0
    nt main err code: 0
    nt secondary err code: 0
    nt OS err code: 0

知道它为什么要使用AppPoolIdentity作为它试图连接的用户吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-22 16:48:07

我终于解决了这个问题。

在上面的编辑中,我添加了必要的权限,解决了第一个问题。

为了完成这项工作,我修改了我的SQLNET.ora文件,如下所示:

代码语言:javascript
复制
# sqlnet.ora Network Configuration File: E:\Oracle_client\product\11.2.0.1\client_x32\network\admin\sqlnet.ora
# Generated by Oracle configuration tools.
#SQLNET.AUTHENTICATION_SERVICES= (NONE, NTS)
SQLNET.AUTHENTICATION_SERVICES= (NONE)
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

请注意,原始SQLNET.AUTHENTICATION_SERVICES现在仅设置为NONE。

(我相信这一改变不会立即生效,但几分钟后就生效了。重新启动机器可能会导致过度死亡,但已经足够了)。

我还把AppPoolIdentity换成了LocalService,然后又换回了AppPoolIdentity。在这样做之后,它起了作用,但我不认为来回切换AppPoolIdentity会对它的工作产生任何影响。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31526582

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档