내 프로젝트에서 SVN과 통신하기 위해 SharpSvn을 사용하고 있습니다. 일부 SVN repostories 들어, 나는 이미 사용자 이름과 비밀 번호를 알고 있지만, 다른 사람은 그렇지 않습니다. 따라서, 나는 System.Net.ICredentials
(의사 코드)의 내 자신의 구현의 인스턴스로 SvnClient.Authentication.DefaultCredentials
속성을 설정 :이 알려진 자격 증명을 잘 작동제공된 DefaultCredentials가 null을 반환하면 SharpSvn의 SvnClient에서 NullReferenceException이 발생합니다.
public class MyCredentials : ICredentials
{
public NetworkCredential GetCredential(Uri uri, string authType)
{
if (AreCredentialsKnown(uri))
return new NetworkCredential("KnownUserName", "KnownPassword");
else
return null;
}
}
. 자격 증명이 알려진하고 있지 않으면 NullReferenceException
는 SharpSvn에서 발생
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
이 분명히 나는 GetCredential 방법에서 null
을 반환한다는 사실에 기인한다. 그러나, 분명 the MSDN documentation on the ICredentials interface으로 적혀있다 :
GetCredential 메소드는 지정된 URI 및 권한 부여 체계와 관련된 자격 증명을 포함하는 NetworkCredential 인스턴스를 반환합니다. 자격 증명을 사용할 수없는 경우 GetCredential 메서드는 null을 반환합니다.
SharpSvn에서 버그입니까? 그렇지 않으면 자격 증명을 알 수 없을 때 무엇을 반환해야합니까?
편집 : 난 그냥 자격 증명이 알 수없는 것을 SharpSvn에 표시하기 위해 new NetworkCredentials()
대신 null
의 반환 할 수 있다는 것을 발견. 아직도, 나는 이것이 null
을 반환하는 것이 똑같이 잘 작동해야하므로 SharpSvn의 버그라고 생각합니다.