/ / Por que caracteres ilegais no caminho? - c #, arquivo

Por que personagens ilegais no caminho? - c #, arquivo

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

A exceção de Erro não tratado indica "caracteres ilegais" no caminho. O MessageBox mostra um caminho correto

  C:UsersMeMyfile.exe

Eu tentei fazer o seguinte:

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

Eu também tentei o seguinte:

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

mas isso não funciona. E o mais estranho é que ele estava funcionando corretamente como é, mas uma vez que eu fiz algumas modificações na maneira que eu estou inserindo o commandContent em db (usando ajax ao invés de enviar formulários regulares), esse problema aparece?

EDITAR:

Eu tentei codificar o caminho usando

 commandContent = @"C:UsersMefile.exe";

Isso funcionou corretamente. Como posso forçar a variável a não conter caracteres ilegais?

Respostas:

6 para resposta № 1

Tenho certeza que você tem n ou r ou t ou ... no final ou no começo da string commandContent

você pode fazer um

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

e verifique cada byte?

talvez a chamada ajax não faça uma string / caminho apropriado

você pode usar isso para descobrir qual

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);
}
}