我们有一个 ascx 自定义控件(不是 Web 部件)托管在一个特殊的 Sharepoint 页面中。此页面允许用户将文件上传到我们的服务器。不幸的是,权限问题阻止了 Sharepoint 将文件保存到网络位置。
归属于基于 Sharepoint 2007 站点的应用程序池的网络帐户具有对该位置的“修改”和“读取”访问权限。
我们已经使用应用程序池帐户使用的凭据登录到另一台计算机,并且可以在指定的网络位置创建目录和文件而不会出现任何问题。
Sharepoint 是否有可能尝试使用其他帐户来保存这些文件,而不是在 IIS7 的应用程序池中设置的那个?
我们得到的错误:
消息:对路径 '\opal\gwl\pictures\L36' 的访问被拒绝。
堆栈跟踪: System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.Directory.InternalCreateDirectory(String fullPath, String path, DirectorySecurity dirSecurity) at System.IO.Directory.CreateDirectory(String path, DirectorySecurity directorySecurity ) 在 ECan.SharePoint.Web.Applications.MyECan_WaterMeterFormDatalogger.SavePhotos()
异常类型: System.UnauthorizedAccessException
用户:系统帐户
ascx 代码隐藏文件中 SavePhotos 函数的代码:
protected void SavePhotos()
{
string wellNo = WellNo.Value;
string epoWaterMeterID = EPO_WaterMeterID.Value;
string dirRoot = ConfigurationManager.AppSettings["PhotoDir"];
string map = wellNo.Substring(0, wellNo.IndexOf('/'));
int photoSaveCount = 1;
foreach (string filePath in Request.Files)
{
HttpPostedFile file = (HttpPostedFile)Request.Files[filePath];
if (file.InputStream.Length > 0)
{
try
{
// Create dir if does not exist
string dir = dirRoot + map;
if (!Directory.Exists(dir)) Directory.CreateDirectory(dir);
// Save file
file.SaveAs(dir + @"\" + wellNo.Replace('/', '_') + "-" + epoWaterMeterID.ToString() + "-" + photoSaveCount.ToString() + ".jpg");
photoSaveCount++;
}
catch (Exception ex)
{
Logger.Write(ex);
}
}
}
}
任何人都有任何想法可能是什么问题?