asp.net 上传文件时,文件名称乱码的问题,急! 急! 急!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp.net 上传文件时,文件名称乱码的问题,急! 急! 急!相关的知识,希望对你有一定的参考价值。
string path = Server.MapPath("EXUpLoadFile/");
if (!Directory.Exists(path))
Directory.CreateDirectory(path);
HttpPostedFile file = Request.Files["Filedata"];
if (file != null && file.ContentLength > 0)
file.SaveAs(path +Request.Form["FileName"]);
编码解码都试了。但是这个乱码问题是在项目框架下出的,单独建个项目就没事,但是放在项目中就乱码。webconfig的设置:
<globalization requestEncoding="GB2312" responseEncoding="GB2312" culture="zh-CN" fileEncoding="GB2312"/>
求解。在线等,你的方法如果好用我一定追分。
编码解码都试了。但是这个乱码问题是在项目框架下出的,单独建个项目就没事,但是放在项目中就乱码。放在项目框架下单独运行还是一样乱码。就得单独创建个项目才不是乱码。
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 参考技术B context.Response.ContentType = "text/plain";
context.Response.Charset = "utf-8";
试一下吧! 参考技术C 解码使用Server.UrlEncode, 而不是HttpUtility.UrlDecode追问
解码就不用说了,我解过哦了,编码解码都试了。但是这个乱码问题是在项目框架下出的,单独建个项目就没事,但是放在项目中就乱码
追答web.config 不要加
还是乱码?
再追你一条。。去了项目别的字体怎么办?加个webconfig就ok了
追答其实utf-8是最保险的,限制了字符集反而会出问题
本回答被提问者采纳 参考技术D utf-8追问试过了
追答单独建个文件夹,文件夹里建一个web.config 试试吧
新的 dll 文件上传到 bin 文件夹后的 ASP.NET 运行时错误
【中文标题】新的 dll 文件上传到 bin 文件夹后的 ASP.NET 运行时错误【英文标题】:ASP.NET runtime error after new dll files uploaded into bin folder 【发布时间】:2021-12-25 05:18:09 【问题描述】:我尝试将新的 dll 文件添加到 asp.net Web 应用程序 bin 文件夹中,并且每次遇到运行时错误。另外,我认为该请求指向其他 web.config 文件,因为当出现运行时错误时,由于 customErros 模式未关闭,因此无法显示任何错误详细信息的信息。这不是真的,因为我将 customErrors 模式设置为关闭并且已经检查了它在应用程序运行时是否正常工作。 ASP.NET 版本是旧版本 - 2.0,不知道 IIS 是什么版本,它是共享主机。出现错误后,我正在删除最后添加的 dll 文件,以便应用程序再次运行。所以现在我无法添加任何新的 dll 库,因为这个运行时错误。任何想法如何解决它?
【问题讨论】:
如果没有详细的错误信息就很难解决问题。我认为您必须尝试做的第一件事就是找到错误消息。您的问题是在您将其部署到 iis 后才出现的吗? 【参考方案1】:一般来说,您永远不会真的想将 bin 文件放入 bin 文件夹中。
如果你做了一个干净的项目(通常可能会这样做),那么 bin 文件就会被清空。如果您需要包含一些附加程序集,请在项目中正确引用它们。然后在构建时,它们将被正确洗牌并正确包含在 bin 文件夹中。
您真的不想将一些 bin 文件放入 bin 文件夹,然后尝试引用这些程序集,因为如上所述,bin 文件夹可以在解决方案的重建过程中被清除。因此,将这些 bin 文件添加为对项目的引用。
另一个问题是在网络发布期间,您可以选择将所有 .dll 文件“合并”到一个程序集中,因此 bin 文件夹再次被视为项目构建的结果输出 - 而不是某个 repostitoty 位置您开始在其中放入 .dll 等。
我似乎有些人试图将 bin 文件放入 bin 文件夹,但你只会遇到问题,因为如前所述,尝试这样做时会出现多个问题。
我的意思是,想想 nuGet 添加?它在项目文件夹中创建一个名为“packages”的文件夹。而且您不会认为此文件夹不会出现在项目文件夹中 - 但您不会开车,因为如果您检查引用,您会看到许多 .dll 引用的 Hodge Podge 将指向该包文件夹。在构建时,.net 和编译过程会确定需要哪些 .dll,然后将它们打乱并放入 bin 文件中。
那么,如果您需要一些 .dll?在项目级别创建一个文件夹,将它们放入,然后将引用添加到您的项目中——它们将被正确链接、解析并在构建时成为您项目的一部分。然后,该构建过程将通过正确引用 bin 文件夹进行复制。
请勿尝试将其设为手动过程。您只需要在项目中添加 + 引用正确的程序集 - 并且 bin 文件夹不是引用此类文件的位置。
我想唯一的例外是如果您的代码在运行时通过说 Assembly.LoadFrom() 加载程序集 (.dll)。
即便如此,您仍然可以在项目中创建一个文件夹(并添加这些文件),并将构建时的副本包含到 bin 文件中。
编辑:
例如,我正在使用 ajax 工具包。所以,在项目探索中我看到了这个:
如果我右键单击 ajaxtool 工具包,显示属性表,我们会看到:
看看那个长长的可怕路径名——绝对 100% 在这个网站之外。但是,通过本地复制,当然在构建过程中,那个 .dll 会被复制到 bin 文件夹中。
上面说的同样适用于 newtonsoft (json),同样,它在网站之外。
因此,那些引用的程序集应该被复制到输出(bin)文件夹中。
但是,您可能使用的是网站而不是网站应用程序。 (你只是打开网站(因此:一个网站)。
或者, 您是否打开一个项目 (sln) 文件,从而拥有一个 asp.net 网站应用程序。 (关键区别在于网站与网站应用程序)。
但是,在这两种情况下,.dll 都应该并且确实在构建期间被复制到输出文件中。但是,如果您只使用一个网站,那么您就没有同样意义上的构建过程。在这种情况下,您可以考虑使用 app_code。
我的意思是,我可以假设将 .dll 放入 bin 中,然后引用它们,但是当你第一次做一个干净的项目时,这会分崩离析——因为 bin 文件夹应该被认为是“临时的”在开发过程中。
【讨论】:
这是一个很好的建议,但可能我的知识很差,无法以新的方式管理它。具体来说,我是这样做的:我使用 nuget manager 并在我的 PC 上的项目中本地安装库。所以nuget manager自动将dll放入bin。当我看到新文件时,我只是将它们复制到服务器上的 bin 文件夹中。 当我提出您的建议时,我会创建另一个名为 BinPackages 的文件夹并将新库复制到其中。接下来,我通过网站->添加引用->浏览添加了对项目的引用。但是路径是本地的,所以它不会在服务器中工作。那么如何“移动”对服务器的引用呢?或者也许有什么方法可以在服务器端引用? 构建时,.dll 应该复制到 bin 文件夹。所有引用的 .dll,无论它们存在于何处,都应因此被复制到 bin 文件夹中。但是,听起来您有一个网站,而不是一个网站应用程序。请参阅我上面的编辑 - 我显示了一个屏幕截图。您可能没有“复制本地”设置? 非常感谢您的耐心等待。你是对的,它是网站,而不是网络应用程序,我在树参考中看不到,我无法检查屏幕上的属性,也没有 copy local 设置,.我也在使用 AjaxControlToolkit 和其他库。我尝试通过添加引用和构建过程来添加 ClosedXML 库,并且在将 dll 从 Bin 文件夹复制到服务器之后,但只有本地我能够在代码中使用它。通常我不使用构建过程,只是在开发PC上更改代码并将文件上传到服务器。 正如你所建议的,我也可以使用 App_Code(那里的类很少)但是当我查看 github 上的源代码时,我不确定应该使用哪些文件(尤其是当我使用VB,只有CS,但没关系)。但是 bin 中的 dll 应该可以正常工作。以上是关于asp.net 上传文件时,文件名称乱码的问题,急! 急! 急!的主要内容,如果未能解决你的问题,请参考以下文章
在Visual Studio 2010中关于asp.net的验证码登录调试时界面出现乱码怎么回事?急!!!