Попробуйте что-то вроде этого вместо этого;
string illegal = "\"M\"\\a/ry/ h**ad:>> a\\/:*?\"| li*tt|le|| la\"mb.?";
string invalid = new string(Path.GetInvalidFileNameChars()) + new string(Path.GetInvalidPathChars());
foreach (char c in invalid)
{
illegal = illegal.Replace(c.ToString(), "");
}
, Но я должен согласиться с комментариями, я, вероятно, попытался бы иметь дело с источником недопустимых путей, вместо того, чтобы попытаться исказить недопустимый путь к законному, но вероятно непреднамеренному.
Редактирование: Или потенциально 'лучшее' решение, с помощью Regex.
string illegal = "\"M\"\\a/ry/ h**ad:>> a\\/:*?\"| li*tt|le|| la\"mb.?";
string regexSearch = new string(Path.GetInvalidFileNameChars()) + new string(Path.GetInvalidPathChars());
Regex r = new Regex(string.Format("[{0}]", Regex.Escape(regexSearch)));
illegal = r.Replace(illegal, "");
однако, вопрос напрашивается сам собой, почему Вы делаете это во-первых.
Просто добавьте заголовок к вашему ответу в действии для вашей перенаправленной страницы.
Поиск в Google дал следующий заголовок:
Refresh: 5; URL=http://host/path
В вашем случае URL-адрес будет заменен на URL-адрес. к действию загрузки
Как сказано на странице, которую я читал, число 5 - это количество секунд ожидания перед "обновлением" URL-адреса.
Поскольку файл является загружаемым, это не должно оттолкнуть вас ваша хорошая страница переадресации :)