我正在做一个允许用户上传/下载文件到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中,它正在使用一个使用网络服务的池(是的,我也试过没有运气的本地系统)。至于网站权限我允许读写。
如果有人可以帮助甚至更好地进行快速示例项目,我将非常感激。