2010-12-29 4 views
1

У меня проблема с APP SharpSVN. Когда я пытаюсь использовать SvnClient.Write() или SvnClient.Export(), возникает следующая ошибка:Проблема с чтением файла с SharpSVN

искаженной URL для хранилища

Мой код выглядит следующим образом

using(SvnClient client = new SvnClient()) 
     { 
      MemoryStream ms = new MemoryStream(); 
      client.Authenticator.DefaultCredentials = new NetworkCredential("master","master"); 
      SvnTarget t1 = new SvnUriTarget(new Uri("http://ETAB-APP:81/repositorio/")); 
      SvnTarget t2 = new SvnUriTarget(new Uri("http://ETAB-APP:81/repositorio/Registro e Controle Acadêmico/Administração/0000/Dossiê do Aluno - ADEMIR JOSPE SANGALLI - (2001193) - Curso (000)/DOC ADICIONAL(264839).pdf")); 

      client.Write(t2, ms); 
      client.Export(t2, "C:\\chups"); 


     } 

Это сводит меня с ума, потому что, если я попытаюсь выполнить этот метод, используя t1 как SvnTarget, все будет хорошо. Но проблема в том, что я не могу экспортировать весь репозиторий каждый раз, когда хочу получить конкретный файл.

Я пытался поставить "@" перед именем URL т.е.

http://@ETAB-APP:81/repositorio/Registro й Контрол Academico/Administração/0000/Dossiê сделать Aluno - Ademir JOSPE Сангалли - (2001193) - Curso (000)/DOC ADICIONAL (264839) .pdf

но ничего не происходит.

Что я делаю неправильно?

PS: Извините, если я сделал какую-либо ошибку, я бразилец, и мой английский не очень хорошо

+0

Что вы получаете, когда получаете доступ к этому URL-адресу через свой браузер? –

+0

Я предполагаю, что у вас не может быть файла как 'SvnUriTarget', поэтому, возможно, попробуйте это. –

+0

Когда я пытаюсь получить доступ к этому URL через браузер, он работает нормально. – Guilhermevrs

ответ

0

То, что я обнаружил, что если вы просто передать произвольный URL в объект конструктора Uri, он будет создать недействительный Uri, который SVN не понимает. Это может быть связано с внешними символами или с экранированием определенных символов, которые не должны быть экранированы конструктором объектов URI по умолчанию.

Разбейте Uri на свои части с помощью объекта UriBuilder, а затем передайте полученный Uri в SVN.

// Build Uri by explicitly specifying the constituent parts. 
UriBuilder uriBuilder = new UriBuilder("http", "ETAB-APP", 81, "/repositorio/Registro e Controle Acadêmico/Administração/0000/Dossiê do Aluno - ADEMIR JOSPE SANGALLI - (2001193) - Curso (000)/DOC ADICIONAL(264839).pdf"); 

using(SvnClient client = new SvnClient()) 
{ 
    MemoryStream ms = new MemoryStream(); 
    client.Authenticator.DefaultCredentials = new NetworkCredential("master","master"); 
    SvnTarget t2 = new SvnUriTarget(uriBuilder.Uri); 
    client.Write(t2, ms); 
    client.Export(t2, "C:\\chups"); 
} 
0

, когда я звоню sharpsvn, чтобы получить информацию по SVN URL (который содержит '&', и конец «/').sharp СВН сгенерирует исключение.

благодарит sbrogers:

вам нужно, чтобы избежать URL ли? СВН Api может сделать это для вас, но это может быть стоит попробовать запустить его через msdn.microsoft.com/en-us/library/... - sbrogers 29 дек '10 в 14:05

I использовать этот код

SvnUriTarget repos = new SvnUriTarget(myUrlString.TrimEnd(new char[] { '/' })); 

моя проблема решена .

+1

Пожалуйста, отредактируйте свой ответ, чтобы сделать его читаемым. – kleopatra

+0

Ответ, который я пишу вчера, ошибочен. SvnTarget t2 = новый SvnUriTarget (YouLongURI.ToString(). TrimEnd (новый char [] {'/'}) –

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