2010-12-29 70 views
1

SharpSVN APIに問題があります。私は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"); 


     } 

です私がtvをSvnTargetとして使用してこのメ​​ソッドを実行しようとすると、すべてうまく動作するので、私を狂ってしまいます。しかし、問題は、特定のファイルを取得するたびにすべてのリポジトリをエクスポートできないことです。 ADEMIR JOSPE SANGALLI - -

は私がAlunoを行う

http://@ETAB-APP:81/repositorio/Registro電子ControleAcadêmico/Administração/ 0000 /Dossiêすなわち、URLの名前の前に "@" を入れてみました(2001193) - Curso(000)/ DOC ADICIONAL(264839).pdf

何も起こりません。

私は間違っていますか?

PS:私はどんな間違いをした場合は申し訳ありませんが、私はブラジル人だと私の英語は非常によくないです

+0

ブラウザからURLにアクセスすると、何が表示されますか? –

+0

私の推測では、ファイルを 'SvnUriTarget'として持つことができないので、おそらくそれを試してください。 –

+0

ブラウザからそのURLにアクセスしようとすると、正常に動作します。 – Guilhermevrs

答えて

0

私は何を発見したことは、あなたが単にウリオブジェクトのコンストラクタに任意のURLを渡すと、それが作成されることですSVNが理解できない無効なUri。これは、デフォルトのUriオブジェクトコンストラクタによってエスケープされる必要のない特定の文字のエスケープや外部文字によるものです。

UriBuilderオブジェクトを使用してUriを分割し、その結果の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

私はurlでSVNの情報を取得するためにsharpsvnを呼び出すとき(つまりは '&' が含まれ、そして「/').sharp SVNの終わりには、例外をスローします。

感謝sbrogers:

あなたは、URLをエスケープする必要がありますか? SVN APIはあなたのためにそれを行うことができますが、それは は msdn.microsoft.com/en-us/library/...を通してそれを実行している試みる価値があるかもしれない - 午後02時05

でI sbrogers 12月29日'10私の問題は、を解決している

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

このコードを使用します。

+1

あなたの答えを読むことができるように編集してください。 – kleopatra

+0

私は昨日書く答えが間違っています。 SvnTarget t2 =新しいSvnUriTarget(YouLongURI.ToString()。TrimEnd(new char [] {'/'}) –

関連する問題