Я использую SharpSvn в своем проекте для связи с SVN.Для некоторых репозиториев SVN я уже знаю имя пользователя и пароль, а для других - нет.Таким образом, я установил для свойства SvnClient.Authentication.DefaultCredentials
экземпляр моей собственной реализации System.Net.ICredentials
(псевдокод):
public class MyCredentials : ICredentials
{
public NetworkCredential GetCredential(Uri uri, string authType)
{
if (AreCredentialsKnown(uri))
return new NetworkCredential("KnownUserName", "KnownPassword");
else
return null;
}
}
Это прекрасно работает для известных учетных данных.Однако, если учетные данные неизвестны, в SharpSvn возникает NullReferenceException
:
Object reference not set to an instance of an object.
at System.Net.NetworkCredential.InternalGetUserName()
at System.Net.NetworkCredential.get_UserName()
at SharpSvn.Implementation.SvnCredentialWrapper.OnUserNamePassword(Object sender, SvnUserNamePasswordEventArgs e) in f:\qqn\sharpsvn-dist-1.6\src\sharpsvn\svnauthentication.h:line 619
Это, очевидно, связано с тем, что я возвращаю null
из метода GetCredential.Однако, как ясно указано в документации MSDN по интерфейсу ICredentials :
Метод GetCredential возвращает экземпляр NetworkCredential, содержащий учетные данные, которые связаныс указанным URI и схемой авторизации.Если учетные данные недоступны, метод GetCredential возвращает null .
Это ошибка в SharpSvn?В противном случае, что я должен вернуть, если учетные данные неизвестны?
Редактировать: Я только что обнаружил, что могу вернуть new NetworkCredentials()
вместо null
, чтобы указать SharpSvn, чтоучетные данные неизвестны.Тем не менее, я думаю, что это ошибка в SharpSvn, так как возвращение null
должно работать одинаково хорошо.