, поэтому у меня есть следующий код, который генерирует хэш-файл sha256 файла данных файла, который был загружен пользователем. Это прекрасно работает, но иногда оно включает незаконные символы (для окон os).Regex.Replace overload?
Так что я пытаюсь реализовать, это попытка поймать полосу незаконных символов. Я вытащил эту информацию с самого сайта Microsoft. Однако, когда он реализован с Regex.Replace()
, мне говорят, что он принимает только 5 перегрузок.
Что сбивает с толку, потому что это то, что у меня есть, и я проверил трижды, что моя hashedfile1name
является переменной типа строки.
Другая проблема заключается в том, что при попытке поймать его говорит мне, что он не знает, что такое RegexMatchTimeoutException
. Но больше нет импорта/использования заявлений в Microsoft's example.
try
{
FileUpload1.SaveAs("C:\\direct\\uploads\\" + FileUpload1.FileName);
using (fs = File.OpenRead("C:\\direct\\uploads\\" + FileUpload1.FileName))
{
byte[] bytes = new byte[fs.Length];
fs.Read(bytes, 0, Convert.ToInt32(fs.Length));
hashedfile1name = Convert.ToBase64String(hash.ComputeHash(bytes));
}
try
{
Regex.Replace(hashedfile1name, @"[^\w\[email protected]]", "", RegexOptions.None, TimeSpan.FromSeconds(1.5));
}
catch (RegexMatchTimeoutException)
{
hashedfile1name = "";
}
FileUpload1.SaveAs("C:\\direct\\uploads\\" + hashedfile1name);
File.Delete("C:\\direct\\uploads\\" + FileUpload1.FileName);
Label1.Text = "File name: " + FileUpload1.PostedFile.FileName + " - " + hashedfile1name;
}
catch (Exception ex)
{
Label1.Text = "ERROR: " + ex.Message.ToString();
}
Какую версию рамки вы используете? Похоже, что перегрузка, которую вы пытаетесь использовать, была добавлена в 4.5 и не будет доступна вам в ранних версиях. – GalacticCowboy
Какая версия .NET вы используете? Эта перегрузка поддерживается только в .NET 4.5 и выше. –
'RegexMatchTimeoutException' был добавлен также в .Net 4.5. http://msdn.microsoft.com/en-us/library/vstudio/system.text.regularexpressions.regexmatchtimeoutexception(v=vs.110).aspx –