相关疑难解决方法(0)

将IIS 7 AppPool标识添加为SQL Server登录

我正在使用集成管道模式的AppPool运行IIS 7网站.AppPools不在NetworkService等运行.身份(按用途),但使用它自己的AppPool Identitiy(IIS AppPool\MyAppPool).

这是一个所谓的服务帐户或虚拟帐户.(用户帐户,不是完整帐户......)

我想授予此服务帐户(IIS AppPool\MyAppPool)连接到我的SQL Server 2008 Express(以混合身份验证模式运行)的权限.

虽然SQL Server可以添加任何普通用户帐户,但无法将IIS AppPool\MyAppPool虚拟帐户添加到有效登录中(SQL Server表示无法找到该帐户).

有什么技巧,我需要启用什么来使虚拟帐户工作?(根据taskmgr,w3wp.exe进程在此身份下运行,但我无法在NTFS安全性中使用该帐户...)

谢谢你的帮助!

sql-server iis-7

222
推荐指数
6
解决办法
12万
查看次数

在IIS 7.5和Windows Server 2008 R2下为ASP.NET的联网UNC文件夹授予写入权限

BLUF

我们的应用程序正在尝试使用在.NET 4.5,IIS 7.5和Windows Server 2008 R2下运行的ASP.NET Web服务将文件写入UNC文件夹.但是,任何将文件写入所需位置的尝试都会导致访问被拒绝的异常.

这项任务似乎很简单但是我和我的团队已经对此进行了一段时间的故障排除,我们对可能导致错误的原因感到困惑.以下是我们的设置细节以及到目前为止我们尝试过的内容.名称已被更改以保护无辜者.

环境设置

Web服务器,MyWebServer的,有一个名为网站My.Site.Com名为相应的应用程序池My.Site.Com.应用程序池的配置如下所示.

 .NET Framework Version     : v4.0
 Enable 32-bit Applications : False
 Managed Pipeline Mode      : Integrated
 Name                       : My.Site.Com
 Identity                   : ApplicationPoolIdentity
 Load User Profile          : False
Run Code Online (Sandbox Code Playgroud)

我们正在试图写入的UNC路径\ myotherserver\mydirectories \输出,其中mydirectories是实际份额.在此共享上,名为mygroup-www的域组已被授予对共享和所有子文件夹的完全权限.机器帐户(即mywebserver)是此mygroup-www组的成员.

注意:目前,这个UNC路径实际上位于同一台机器mywebserver上.但是,在我们的测试环境中以及生产环境中,当它准备就绪时,最终会将其移动到mywebserver以外的机器上.目前,我只有一个测试环境来进行故障排除.

可以通过执行以下代码来复制错误.

[WebMethod]
[ScriptMethod(UseHttpGet = false, ResponseFormat = ResponseFormat.Json)]
public string ExportReport(int reportId)
{
    try
    {
        string output = ConfigHelper.OutputPath + "test.html"; // UNC path
        string url = …
Run Code Online (Sandbox Code Playgroud)

permissions access-denied iis-7.5

28
推荐指数
1
解决办法
3万
查看次数

..ActiveDirectory.ActiveDirectorySite.getComputerSite().name返回错误:ActiveDirectoryObjectNotFoundException

感谢您的观看:希望这不仅可以帮助其他人,而且可以帮助我们!(请保持温和,这是我在Stack上的第一个问题,虽然我已经是很长时间的用户/贡献者)

情况(SNAFU) AD站点感知应用程序正在从AD中提取一些信息.此应用程序只能连接到托管服务器的Active Directory站点中的控制器; 如果没有找到该网站的控制器,我们有更大的问题,但代码将处理这种可能性.

为实现这一目标,我们打算:

  1. 获取托管Web应用程序的服务器所在的站点名称.
  2. 利用该站点名称信息在DirectoryServices中查询站点内的控制器列表
  3. 通过控制器迭代,直到我们获得所需信息的有效响应.

所以PSEDUO代码:

System.DirectoryServices.ActiveDirectory.DirectoryServices.GetComputerSite().Name 
Run Code Online (Sandbox Code Playgroud)

获取服务器所在站点的名称...然后循环

System.DirectoryServices.ActiveDirectory.DirectoryServices.ActiveDirectorySite

直到我们找到与获得的名称相匹配的网站.现在我们有了这个集合,我们可以从servers属性请求特定的服务器.最后用服务器,请求所需的AD信息.

问题: 第一步,GetComputerSite().Name返回错误:ActiveDirectoryObjectNotFoundException

在我们的开发环境中,这很好用.在我们的生产环境中它不会.

我们验证了服务器在域中并通过检查此其他堆栈文章中提到的注册表项来定义站点

更多研究引导我们阅读描述类似问题的technet文章.我们使用上面提到的powershell脚本来查看我们的Web服务器会发生什么:

[System.DirectoryServices.ActiveDirectory.ActiveDirectorySite]::GetComputerSite()它返回了服务器和我们希望找到的8个控制器的列表; 以及正确的网站名称; 与注册表中的相同.

因此,这导致我们在默认应用程序池NetworkServices与ApplicationPoolIdentity之间存在权限差异.正如我们在此处所知,Web服务器可以看到网站和服务器......那么为什么无法使用Web应用程序呢?

我们发现通过从ApplicationPoolIdentity切换到NetWorkServices,该站点再次起作用(这恰好是开发设置并解释了为什么dev工作但生产不会.但是,因为这不再是默认的IIS 7.5配置(ApplicationPoolIdentity是);并且我们倾向于尝试保持默认值,因为补丁有时会将设置恢复为默认值...我们希望找到一个更强大的长期答案,更接近MSFT方向.

问题:

  • 有没有更好的方法来获取服务器站点内的活动/响应控制器的句柄并获得对用户部门信息的访问权限?

  • 需要向ApplicationPoolIdentity添加哪些权限才能允许此应用程序访问AD服务?

其他相关文章

不幸的是,到目前为止,我们发现所有人都设置了查看文件夹/文件系统的权限,但没有使用AD服务器(或者我们是否需要授予对包含正在使用的AD类的DLL的特定文件夹的访问权限?

更新: 我们认为给出错误的问题可能在于ApplicationPoolIdentity无法访问System.DirectoryServices.dll所以我们明确授予了权限

cacls.exe %windir%/assembly/System.DirectoryServices /e /t /c /p “OurAppPoolIdentityAcct”:R
Run Code Online (Sandbox Code Playgroud)

它开始工作!!!

我们无法相信它,所以我们解除了变化......并重新启动了IIS ....它仍然有效......

所以它似乎神奇地修复了自己.我们甚至只是通过从NetworkServices切换回ApplicationPoolIdenity来尝试生产,一切都开始工作了......我们不知所措,但没有进一步的调整.我们暂时监控并希望问题不会回来......不是最好的方法,但由于我们不能像以前那样重现问题,我们不知道还有什么可以尝试.

上一次更新旁边 我们发现使用应用程序池标识的IIS应用程序中引用的KB 会丢失主令牌?实际上是问题所在.我们

  • 已验证的网站正在运营(它是)
  • 使用此修补程序中引用的Nltest.exe实用程序强制更改计算机密码
  • 验证该网站已被破坏(它是)
  • 重新启动
  • 验证该网站再次运营(它是)

我们接下来的步骤是执行类似的步骤来确认此修补程序确实可以解决问题.我们会: .

  • 验证站点是否正常运行(是)
  • 部署修补程序(完成)
  • 重启(完成)
  • 验证网站是否正常运行(它是)
  • 使用此修补程序中引用的Nltest.exe实用程序强制更改(完成)计算机密码
  • 验证网站是否正常运营(IT WAS !!!!!!!!)
  • 重启(完成)
  • 验证网站是否正常运营(IT …

.net directoryservices application-pool active-directory iis-7.5

8
推荐指数
1
解决办法
1259
查看次数

DirectoryServicesCOMException 80072020来自IIS 7.5在ApplicationPoolIdentity下运行的站点

我无法找到ASP.NET 4应用程序失败的问题,同时尝试为给定用户获取用户组.与此应用程序关联的应用程序池设置为在ApplicationPoolIdentity下运行.

例外信息

System.DirectoryServices.DirectoryServicesCOMException
HRESULT: 80072020
Message: An operations error occurred.
Extended Message: 000004DC: LdapErr: DSID-0C0906E8, comment: In order to perform this operation a successful bind must be completed on the connection., data 0, v1db1
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪

    System.DirectoryServices.DirectoryEntry.Bind(Boolean) 
    System.DirectoryServices.DirectoryEntry.Bind() 
    System.DirectoryServices.DirectoryEntry.get_AdsObject() 
    System.DirectoryServices.DirectorySearcher.FindAll(Boolean) 
    System.DirectoryServices.DirectorySearcher.FindOne() 
Run Code Online (Sandbox Code Playgroud)

95%-99%的时间,此功能正常,但有时,它只是开始失败.当我将应用程序池更改为使用LocalSystem或NetworkService时,它开始工作.当我改回ApplicationPoolIdentity时,它又开始失败了.使ApplicationPoolIdentity重新启动站点的唯一方法是重新启动服务器.

我在这里找到了类似的问题,但解决方案也是重启.我想找到一个更永久的解决方案,而不是改变应用程序池的身份.

asp.net directoryservices iis-7.5 applicationpoolidentity

6
推荐指数
1
解决办法
5059
查看次数