我有一个应用程序向VB论坛软件发送POST请求并记录某人(没有设置cookie或任何东西).
一旦用户登录,我创建一个在其本地计算机上创建路径的变量.
C:\ tempfolder \日\用户名
问题是一些用户名正在抛出"非法字符"异常.例如,如果我的用户名是,mas|fenix它会抛出异常..
Path.Combine( _
Environment.GetFolderPath(System.Environment.SpecialFolder.CommonApplicationData), _
DateTime.Now.ToString("ddMMyyhhmm") + "-" + form1.username)
Run Code Online (Sandbox Code Playgroud)
我不想从字符串中删除它,但是在服务器上通过FTP创建了带有用户名的文件夹.这导致了我的第二个问题.如果我在服务器上创建一个文件夹,我可以留下"非法字符"吗?我只是问这个,因为服务器是基于Linux的,我不确定Linux是否接受它.
编辑:似乎URL编码不是我想要的..这是我想要做的:
old username = mas|fenix
new username = mas%xxfenix
Run Code Online (Sandbox Code Playgroud)
其中%xx是ASCII值或任何其他可以轻松识别字符的值.
如果只处理url编码,我应该使用EscapeUriString?
通常我会使用:
HttpContext.Current.Server.UrlEncode("url");
Run Code Online (Sandbox Code Playgroud)
但由于这是一个控制台应用程序,HttpContext.Current所以总会如此null.
还有另一种方法可以使用我可以使用的相同方法吗?
我想在控制台应用程序,VB.NET,VS 2010 Beta 2中使用HttpUtility.UrlEncode.
System.Web.HttpUtility.UrlEncode(item)
Run Code Online (Sandbox Code Playgroud)
错误消息:'HttpUtility'不是'Web'的成员.
在这个问题中, Anjisan建议添加对System.Web的引用,如下所示:
但是,我在该位置没有System.Web条目.
.net vb.net urlencode console-application visual-studio-2010
我在Windows Mobile上使用紧凑框架/ C#.
在我的应用程序中,我通过序列化对象并使用HttpWebRequest/POST请求将数据上传到服务器来上传数据.在服务器上,后置数据被反序列化并保存到数据库.
前几天我意识到我在帖子数据(&符号等)中遇到了特殊字符的问题.所以我在方法中引入了Uri.EscapeDataString(),一切都很顺利.
但是,今天我发现当应用程序尝试上传大量数据时出现问题(我不确定此刻究竟表示"大"的是什么!)
现有代码(种类)
var uploadData = new List<Things>();
uploadData.Add(new Thing() { Name = "Test 01" });
uploadData.Add(new Thing() { Name = "Test 02" });
uploadData.Add(new Thing() { Name = "Test with an & Ampersand " }); // Do this a lot!!
var postData = "uploadData=" + Uri.EscapeDataString(JsonConvert.SerializeObject(uploadData, new IsoDateTimeConverter()));
Run Code Online (Sandbox Code Playgroud)
问题
对Uri.EscapeDataString()的调用导致以下异常:
System.UriFormatException:无效的URI:Uri字符串太长.
题
有没有其他方法来准备上传数据?
据我所知,HttpUtility(它有自己的Encode/Decode方法)不适用于紧凑的框架.
我正在使用HttpUtility.UrlEncode()字符串令牌,原始令牌是t+Bj/YpH6zE=当HttpUtility.UrlDecode()它变为t Bj/YpH6zE=打破算法时.是一种停止在c#中将+更改为空格的方法.
我目前正在使用replace方法来实现这一点 var token_decrypt = HttpUtility.UrlDecode(token).Replace(" ", "+");
public HttpResponseMessage RegisterUser(User user, string token)
{
int accID;
if(string.IsNullOrWhiteSpace(token))
{
return Request.CreateResponse(HttpStatusCode.BadRequest);
}
else
{
try
{
// token now = t Bj/YpH6zE= which will fail
var token_decrypt = HttpUtility.UrlDecode(token);
token now = t Bj/YpH6zE= still the same
accID = int.Parse(Crypto.Decrypt(token_decrypt, passPhrase));
}
catch
{
return Request.CreateResponse(HttpStatusCode.BadRequest, "Invalid account ");
}
Run Code Online (Sandbox Code Playgroud)
她编码令牌
string encoded_token = HttpUtility.UrlEncode(token);
System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();
SmtpClient …Run Code Online (Sandbox Code Playgroud) 我正在使用 SSRS Action -> Go To Url 像这样:
="javascript:void(window.open('http://xxx/xxx/Pages/ReportViewer.aspx?%2fDevelopment%2fReport&rs:Command=Render&Parameter="& Parameters!Parameter.Value &"'))"
生成的链接应该是:
http://xxx/xx/Pages/ReportViewer.aspx?/Development/Report&rs:Command=Render&Parameter=Úxxx
在上面的示例中,我需要以某种方式使用变音符号来转义特殊字符,例如字符“Ú”。没有转义这个字符,上面的链接就被破坏了。
谢谢你的帮助。