IIS中丢失文件表(SQL Server 2016)FILESTREAM权限

IIS中丢失文件表(SQL Server 2016)FILESTREAM权限,iis,sql-server-2016,filetable,Iis,Sql Server 2016,Filetable,我正在尝试将图像存储在可从网站访问的文件表中。 根据我的理解,FileTable需要向运行网站运行的应用程序池的帐户授予“选择”权限 我所拥有的示例: IIS(6.2) 应用程序池用户:域\Bob SQL Server登录域\Bob 数据库在db\u owner组中有Domain\Bob。我在文件表中也明确授予了Domain\Bobselect DB.dbo.FileStream\u FileTable是\\DEV\FileStream\u FileTable\ IIS有一个站点 SiteA有

我正在尝试将图像存储在可从网站访问的文件表中。 根据我的理解,FileTable需要向运行网站运行的应用程序池的帐户授予“选择”权限

我所拥有的示例:

  • IIS(6.2)
  • 应用程序池用户:域\Bob
  • SQL Server登录域\Bob
  • 数据库在
    db\u owner
    组中有
    Domain\Bob
    。我在文件表中也明确授予了
    Domain\Bob
    select
  • DB.dbo.FileStream\u FileTable
    \\DEV\FileStream\u FileTable\
  • IIS有一个站点
  • SiteA有虚拟目录
    Image
    目标
    \\127.0.0.1\DEV\FileStream\u FileTable\
如果我查看IIS身份验证,IIS错误表明访问
web.config
的权限不足,但没有
web.config

在服务器上,运行Internet Explorer,将图像引用为
\\127.0.0.1\DEV\FileStream\u FileTable\\Image1.jpg
,它解析为jpg

在服务器上,运行Internet Explorer,将图像引用为
HTTP://127.0.0.1/SiteA/image/Image1.jpg
,IE错误(与身份验证错误相同)

配置错误
由于权限不足,无法读取配置文件

配置文件
\?\UNC\127.0.0.1\dev\ItemImage\web.config

没有配置文件

在访问指向\127.0.0.1\DEV\Filestream\u FileTable的虚拟文件夹“Images”时,我已尝试指定Windows用户(域\Bob)上下文 并且也没有指定windows凭据

我不理解为什么在Internet Explorer中使用UNC路径时图像可见(它必须将我的上下文验证为在filestream_filetable表上有select),但在IIS中使用上下文指定在表上也有select的用户的Windows上下文时图像不可见

注意:作为一个实验,我修改了IIS中用于访问管理员共享的用户。然后IIS站点解析了该映像

(指向\\servername\sql\u实例\u filestream\u handle\directory\tablename的虚拟目录)

Windows用户域\Bob对数据库-数据库所有者具有完全权限

还有另一个用户的问题,如果IIS和SQL server位于同一主机上,文件共享中的servername可能会成为一个问题,我已经考虑到了这一点

我已将Domain\Bob添加到IIS\u iUrs组

什么是域\Bob不是授予访问权限的成员?
我不能很好地使用管理员帐户访问我的所有IIS共享

在某些情况下,如果UNC路径仅返回“拒绝访问”错误,IIS将尝试创建web.config。如果IIS无法创建web.config,它也将无法使用500.19访问web.config


因此,请确保您的应用程序池标识设置为具有访问该文件夹的读/写权限的域帐户


然后请尝试设置匿名身份验证->编辑..->应用程序池标识。

Windows用户域\Bob不是DEV sql实例中的登录名。 创建sql登录解决了这个问题。脸红

数据库级别有用户,是的,但SQL server没有登录名


FacePalm感谢您的回复@玩笑。我已使应用程序池用户成为db_owner的成员,SQL正在呈现共享,因此控制访问?在高级设置中,我已将访问共享的站点虚拟文件夹设置为使用域帐户。@a是否已为域帐户设置NTFS权限和网络共享访问权限?在计算机管理/共享文件夹/共享中,我已明确授予域\Bob对共享的完全权限。SQL管理的共享,存储在文件系统上为F:\Catalyst$DEV\images\content\cc9f5495-bb4e-4c6d-a190-7ef66e6c44e5-我还授予了域\Bob读取权限。我知道这是文件夹,因为文件计数与我在FileTable中的行计数匹配。请尝试process monitor并为“结果=拒绝访问”添加筛选器。它应该可以帮助您解决这个问题。我修改了我的问题,以包括过程监视器的结果。同样,这是一个访问被拒绝的问题——但是应用程序池帐户、数据库登录和该“用户帐户”的文件系统级访问允许读取。在我授予Domain\Bob对SQL显示为共享的文件夹的完全权限后,也会出现相同的结果。如果您可以接受您的答复作为答案,我们将不胜感激。谢谢因此,请确保您的应用程序池标识设置为具有访问该文件夹的读/写权限的域帐户。这,你最初的陈述,就是答案。谢谢@JokiesDing