1

SharpSVN API に問題があります。SvnClient.Write() または SvnClient.Export() を使用しようとすると、次のエラーが発生します。

リポジトリの不正な 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 e Controle Acadêmico/Administração/0000/Dossiê do Aluno - ADEMIR JOSPE SANGALLI - (2001193) - Curso (000)/DOC ADICIONAL(264839).pdf

しかし、何も起こりません。

私は何を間違っていますか?

PS: 間違っていたらすみません。私はブラジル人で、英語はあまり得意ではありません。

4

2 に答える 2

0

私が見つけたのは、単に任意の URL を Uri オブジェクト コンストラクターに渡すと、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");
}
于 2012-02-23T22:49:22.963 に答える
0

Sharpsvn を呼び出して URL (「&」と「/」の終わりを含む) で svn 情報を取得すると、sharp svn が例外をスローします。

ありがとうsbrogers :

URLをエスケープする必要がありますか?SVN Api はあなたのためにそれを行うかもしれませんが、msdn.microsoft.com/en-us/library/… で実行してみる価値があるかもしれません

私はこのコードを使用します

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

私の問題は解決しました。

于 2013-01-19T15:01:20.737 に答える