/ / Защо незаконни символи в пътя? - c #, файл

Защо незаконните герои в пътя? - c #, файл

....
case "DOWNLOAD":
if (File.Exists(commandContent)) {
MessageBox.Show(commandContent);
result = System.Convert.ToBase64String(File.ReadAllBytes(commandContent)); //ERROR
result = HttpUtility.UrlEncode(result);
}
break;

При изключение от "Незаписани грешки" се казва "незаконни знаци" в пътя. MessageBox показва правилен път

  C:UsersMeMyfile.exe

Опитах се да направя следното:

 commandContent = commandContent.replace(@"",@"\");
result = System.Convert.ToBase64String(File.ReadAllBytes(commandContent)); //ERROR

Също така опитах следното:

 commandContent = @""+commandContent+"";
result = System.Convert.ToBase64String(File.ReadAllBytes(commandContent)); //ERROR

но това не работи. И колкото по-странно е, че работи правилно както е, но веднъж направих някаква промяна по начина, по който вмъквам commandContent в db (използвайки ajax вместо редовен формуляр за подаване), този проблем се появява?

РЕДАКТИРАНЕ:

Опитах се да кодирам твърдо пътя, използвайки

 commandContent = @"C:UsersMefile.exe";

Това работи правилно. Как мога да принудя променливата да не съдържа незаконни знаци?

Отговори:

6 за отговор № 1

аз съм сигурен, че имате n или r или t или ... в края или началото на низ commandContent

можеш ли да направиш

  System.Text.Encoding.UTF8.GetBytes (commandContent)

и да проверите всеки байт?

може би повикването ajax не прави подходящ низ / пътека

можете да използвате това, за да намерите кой

class Program
{
static void Main(string[] args)
{
var commandContent = "C:\Users\Me\file.exen";
var commandContentBytes = System.Text.Encoding.UTF8.GetBytes(commandContent);
var invalidPathChars = System.IO.Path.GetInvalidPathChars().Select(x=>Convert.ToByte(x));

var found = commandContentBytes.Intersect(invalidPathChars);
}
}