【发布时间】:2021-09-15 02:12:40
【问题描述】:
有一个 IP 为192.168.0.36 的端口。这是一个服务器,它将存储上传到 Web 应用程序的文件,但这是我第一次尝试做类似的事情,所以我尝试了很多方法来将文件存储在该服务器中,但是当它发送文件时应用程序产生了以下错误:
WebClient 请求期间的异常
所以我打开了 Visual Studio 错误菜单以了解更多信息,并且有一条消息说:
InnerException = {"找不到文件'C:\Program Files (x86)\IIS Express\download.png'。":"C:\Program Files (x86)\IIS Express\download.png" }
如果我不访问分区C为什么会产生这个错误:
这是我的代码:
<asp:FileUpload runat="server" ID="file_foto" CssClass="file-foto-pf" Style="display: none;" accept="image/*" />
protected void actualizar_foto(object sender, EventArgs e)
{
try
{
if (file_foto.HasFile)
{
string Id_Usuario = Request.QueryString["Id_Usuario"].ToString();
string serverName = @"\\192.168.0.36\\E:\\INTRANET\\";
string folder = "PRUE\\";
string fileName = Path.GetFileName(file_foto.FileName)
// Upload to Hosted Server.
WebClient webClient = new WebClient();
Uri uri = new Uri(serverName + folder + fileName);
webClient.UploadFile(uri, "POST", fileName)
DCL.Int_Usuarios obj = new DCL.Int_Usuarios();
obj.Anexo_Foto = uri.ToString();
obj.Id_Usuario = Convert.ToInt32(Id_Usuario);
Int_Usuarios_BRL.InsertOrUpdate(obj, 45);
}
Page.Response.Redirect(Page.Request.Url.ToString(), true);
}
catch (Exception ex)
{
Console.Write(ex);
}
}
【问题讨论】:
-
您的服务器与网站 - 后面的代码是否直接使用其他服务器上的文件夹?您不能在 file:// 中进行测试类型 - 因为这对您的浏览器来说意味着您正在使用本地文件 - 而不是来自 Web 服务器。如果用户将文件上传到 Web 服务器,那么您可以使用平面 jane windows 文件路径而不是 url 路径在您的代码中执行另存为。
-
我的文件保存在不同的服务器上
-
您是否使用 FTP 或 https 或其他方式保存到该其他服务器,或者当前运行的网站是否具有文件系统的直接权限和使用权?这意味着当前网站和 URL 不匹配也不映射到第二台服务器,但您可以执行以下两项操作之一;创建虚拟文件夹以映射到该服务器(这意味着存在第二台服务器上文件夹的有效 URL)。或者使用后面的代码来保存,并将给定的文件拉/蒸给最终用户。第二个选择更安全,因为文件的有效 URL 永远不会作为 url 存在,但只有后面的代码可以使用 - 这通常很好
-
我在说什么?通常,网站需要一些巨大的文档文件夹等,并且它们与 Web 服务器不在同一个文件夹中。因此,您可以映射 + 创建一个虚拟文件夹并将其指向另一台服务器。这样,基础文件夹的 URL 现在就可以工作了。当然,如果两台服务器位于同一网络上,您只能创建这些虚拟文件夹。但这就是您将文档和文件夹共享到网站的方式。这意味着您不必将所有这些文件、图片和文档文件夹放在实际的 Web 服务器上。这也意味着现在有效 URL 的 eixst。
-
使用 IIS express 版本设置虚拟文件夹是一件非常痛苦的事情。有了完整的附加功能,它是从 UI 内置的。从 IIS 服务只需打开文件夹树,右键单击根文件夹,您会看到创建/添加虚拟文件夹。对于 IIs EXPRESS?您必须编辑 Web 配置文件,因为我们没有漂亮的 IIS(互联网服务)用户界面,这使得这样做非常容易。