如何解决ASP.NET MVC网站从磁盘读取文件问题
| 我正在研究一个正在使用的MVC网站中的文本文件,其中包含使用C#进行sql插入的语句。当调试我正在使用的功能时,工作正常,并且会发生插入。但是,一旦我发布了站点并在本地计算机上运行它(甚至将IIS设置为使用asp.net 4.0),它似乎就无法工作。 if (Request.Files != null && Request.Files[\"txtImportFile\"] != null)
{
//newFilePath = Server.MapPath(\"\\\\\" + DateTime.Now.Ticks + Request.Files[\"txtImportFile\"].FileName);
string[] temp_string = Request.Files[\"txtImportFile\"].FileName.Split(new char[] { \'\\\\\' });
string temp_filename = temp_string[temp_string.Count() - 1];
//newFilePath = Server.MapPath(\"\\\\temp\\\\\" + DateTime.Now.Ticks + Request.Files[\"txtImportFile\"].FileName);
newFilePath = Server.MapPath(\"\\\\temp\\\\\" + DateTime.Now.Ticks + temp_filename);
Request.Files[\"txtImportFile\"].SaveAs(newFilePath);
StreamReader reader = new StreamReader(newFilePath);
string contents = reader.ReadToEnd();
reader.Close();
Models.WingsRemoteDbLibrary dbLib = new Models.WingsRemoteDbLibrary();
string update_message = dbLib.UpdateSlaveItemsTable(contents);
if (System.IO.File.Exists(newFilePath))
System.IO.File.Delete(newFilePath);
RandomPopupView(update_message);
}
我希望我的解释听起来不模糊。我会尽力回答任何其他问题。谢谢。
解决方法
解决方法:
而不是使用
Server.MapPath(\"\\\\temp\\\\\"...
在根目录下以名称“ \ temp \”创建文件夹并使用
System.Web.HttpContext.Current.Request.MapPath(\"~\\\\temp....
,好吧,“它似乎不起作用”是非常模糊的-多一点细节就可以了!但这听起来像是权限问题。 IIS中的默认配置文件对磁盘的访问很少,尤其是写访问。无论如何,在您自己的站点内编写并不是一个好主意(我自己将使用磁盘的无关部分),但是您将需要配置IIS以特定的命名身份运行应用程序,并使用访问磁盘。不幸的是,配置帐户本身(不是IIS-帐户;例如,授予“作为服务的登录名”)作为ASP.NET帐户运行并不是一件容易的事。
另一个想法:您的应用是子应用,即您的应用根是/
还是/MyApp/
?我问的原因是,相对于应用程序根目录,即~/temp/
,使用MapPath
可能更好。在应用程式内撰写文字是有风险的。您确实希望该文件夹不执行。
,对于此问题可能有替代解决方案。如果可以在构建时将文件“烘焙”到程序集中,则可以避免完全弄乱路径和文件系统。这是您可以执行的操作:
在Visual Studio解决方案资源管理器中,右键单击文件,然后转到“属性”。
将“构建操作”设置为\“嵌入式资源”。
稍后,您可以使用GetManifestResourceStream读取文件:
var stream = GetType()
.Assembly
.GetManifestResourceStream(\"YourNameSpace.Folder.YourFile.txt\");
using (var reader = new StreamReader(stream)) {
var fileContent = reader.ReadToEnd();
}
更多信息在这里。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。