2013-07-26 3 views
2
private void ReadText(string text) 
    { 
     string add = "http://translate.google.com/translate_tts?tl=ta&q="; 
     add += HttpUtility.UrlEncode(text, Encoding.GetEncoding("utf-8")); 
     try 
     { 
      using (var client = new WebClient()) 
      { 
       try 
       { 
        client.Headers[HttpRequestHeader.UserAgent] = 
         "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1";           } 
       catch 
       { 
        MessageBox.Show("Intenet error"); 
       } 

       try 
       {       
        client.DownloadFile(add, "mp3CriationTest.mp3"); 
       } 
       catch 
       { 
        MessageBox.Show("NAudio Error"); 
       } 
      } 
     } 
     catch (WebException e3) 
     { 
      MessageBox.Show("ReadText error: " + e3); 

     } 
    } 

Я использую nAudio для перевода текста в речь (tts). Этот код работает намного лучше для меня, когда я запускаю Visual Studio debug (F5). Но когда я создал файл установки, я получу сообщение об ошибке «Ошибка NAudio». Поэтому очевидно, что существует проблема с сохранением/созданием «mp3CriationTest.mp3» в папке приложения моей установки. Но создание «mp3CriationTest.mp3» в папке отладки отлично работает, когда я использую отладку Visual Studio (F5). Может ли кто-нибудь знать, в чем проблема? Помогите.Проблема с установкой C#.

+1

Вы должны взглянуть на stacktrace вашего пойманного исключения, вместо того, чтобы проглотить его и обмануть себя, просто открыв окно с сообщениями, которое буквально ничего не говорит вам. ;-) –

+0

Кроме того, это плохая практика для чрезмерного использования try catch: http://stackoverflow.com/questions/1722964/when-to-use-try-catch-blocks –

+0

@FabianBigler ok получил это thx. –

ответ

3

Вы не можете писать прямо в папку файлов программ, если у вас нет административных прав. Вы можете сохранить файл в папку данных приложения (указанная среда); например,

string fileName = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\" + "mp3test.mp3"; 
client.DownloadFile(add, fileName); 
+3

Лучше использовать 'Path.Combine (AppDataFolder," mp3File ")', еще лучше создать собственную папку приложения :) – Sayse

+0

согласен с созданием новой папки – Leon

+0

@ Leon, можете ли вы рассказать мне, как создать «mp3CriationTest.mp3» в папку приложения, а не извлекать его. Скажем, если я скопирую «mp3CriationTest.mp3» вручную в эту папку приложения, тогда программа отлично работает. Я хочу создать новый «mp3CriationTest.mp3» в папке приложения без конфликта «client.DownloadFile (add,« mp3CriationTest.mp3 »); метод. –

Смежные вопросы