IIS站点无法访问本地客户端驱动器

时间:2015-09-17 18:36:39

标签: c# iis

我正在做一个允许用户上传/下载文件到SQL流的项目。

这在本地测试时非常有效,但是当我上传它并拥有IIS时,它似乎无法正常工作。我认为这是一个许可问题。

我无法解决。

我甚至尝试使用未经投影的文件夹,如下所示(没有运气):

string tempPath = System.IO.Path.GetTempPath();
string tempPath2 = System.Environment.GetEnvironmentVariable("TEMP");
string tempPath3 = Environment.GetFolderPath(System.Environment.SpecialFolder.ApplicationData);
var fullpath = Path.Combine(tempPath2, "MeDoc.Doc");

我甚至尝试使用以下显示的身份验证(也没有运气):

DirectoryInfo di = new DirectoryInfo(fullpath);
DirectorySecurity acl = di.GetAccessControl();
AuthorizationRuleCollection rules = acl.GetAccessRules(true, true, typeof(NTAccount));
WindowsIdentity currentUser = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(currentUser);

DirectorySecurity fsecurity = Directory.GetAccessControl("C:\\Temp\\Docs\\");
SecurityIdentifier sid = new SecurityIdentifier(WellKnownSidType.AuthenticatedUserSid, null);
FileSystemAccessRule writerule = new FileSystemAccessRule(sid, FileSystemRights.Write, AccessControlType.Allow);

fsecurity.AddAccessRule(writerule);
// Set the ACL back to the file
Directory.SetAccessControl("C:\\Windows\\Temp\\", fsecurity);

if (!string.IsNullOrEmpty("C:\\Temp\\Docs\\") && Directory.Exists("C:\\Temp\\Docs\\"))
{
    // Get your file's ACL
    DirectorySecurity fsecurity3 = Directory.GetAccessControl("C:\\Temp\\Docs\\");

    // Add the new rule to the ACL`enter code here`
    fsecurity3.AddAccessRule(writerule);

    // Set the ACL back to the file
    Directory.SetAccessControl("C:\\Temp\\Docs\\", fsecurity);
}

即使在web.config中:

<authorization>
<allow users="?"/>
<!--<anonymousAuthentication enabled="true" />-->
</authorization>

IIS服务正在使用网络帐户。

感谢任何帮助。

请注意,在我的机器上进行调试时,几乎所有使用的方法都能正常工作。

当它在运行网络帐户的Web服务器上的IIS上时,情况就不同了。

在IIS中,它正在使用一个使用网络服务的池(是的,我也试过没有运气的本地系统)。至于网站权限我允许读写。

如果有人可以帮助甚至更好地进行快速示例项目,我将非常感激。

0 个答案:

没有答案