management problem of a NullReferenceException





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}







0















I have an issue in the Try Catch block of my code below.
In function SetUser, I use the getId function that returns an Id if the user exists in DB otherwise, I get a NullReferenceException.

I call this function in the try catch block in Login. I have a problem with the catch because when the exception is generated, I would like the user to be redirected to the register page. But when I try to execute my code with a non-existing user, I think that I have a kind of infinite loop because my page doesn't stop loading. I don't understand what I'm doing wrong. Need help please



function Login:



 public static void Login(HttpRequest Request, HttpResponse Response, string redirectUri)
{
if (Request.IsAuthenticated)
return;
if (!Request.Form.AllKeys.Contains("id_token"))
return;
string value = Request.Form.Get("id_token");
JObject id_token = JwtDecode(value);
string upn = id_token.GetValue("upn").ToString();
DateTime expiretime = GetExpireTime(id_token);

try
{
SetUser(id_token);
}
catch (Exception ex)
{
Response.Redirect("~/register.aspx");
}
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, upn, DateTime.UtcNow, expiretime, false, id_token.ToString(), FormsAuthentication.FormsCookiePath);
string encryptedcookie = FormsAuthentication.Encrypt(ticket);
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedcookie);
cookie.Expires = expiretime;
Response.Cookies.Add(cookie);
redirectUri = GetRedirectUrl(Request, redirectUri);
Response.Redirect(redirectUri, true);
}


function setUser:



 private static void SetUser(JObject id_token)
{
string email = id_token.GetValue("unique_name").ToString();
string name = id_token.GetValue("given_name").ToString();
DataSet ds;

List<Claim> claims = new List<Claim>()
{
new Claim(ClaimTypes.Email, email),
new Claim(ClaimTypes.Name, GetId(email))
};

string roles= "SELECT name FROM AspNetRoles;
ds = GetDataSet(roles);

if (ds.Tables.Count > 0)
{
foreach (var row in ds.Tables(0).Rows)
claims.Add(new Claim(ClaimTypes.Role, row("name")));
}

ClaimsIdentity claimsIdentity = new ClaimsIdentity(claims, "Cookies");
ClaimsPrincipal principal = new ClaimsPrincipal(claimsIdentity);
HttpContext.Current.GetOwinContext().Authentication.User = principal;
Thread.CurrentPrincipal = principal;
}


function getId:



 public static string getId(string email)
{
return ((new UserManager()).FindByEmail(email)).Id;
}









share|improve this question

























  • What page is the function Login() on? Is it on register.aspx?

    – asherber
    Nov 27 '18 at 0:41











  • no @asherber, the function login() is in the the class that handles authentication

    – kst92
    Nov 27 '18 at 2:17











  • I don't think I have enough information here about how the pieces fit together. What page initially calls Login()? Can you include some of the code that shows how it is called?

    – asherber
    Nov 27 '18 at 15:37











  • Login () is called in the masterpage. it's actually authentication via Azure Directory in an asp.net application

    – kst92
    Nov 27 '18 at 16:41











  • I'm afraid that isn't enough for me to go on. You might be interested in stackoverflow.com/questions/17417366/… Note that Response.Redirect() works by throwing an exception, so that if the code which calls Login() is itself in a try..catch block, that might have something to do with it.

    – asherber
    Nov 27 '18 at 19:33


















0















I have an issue in the Try Catch block of my code below.
In function SetUser, I use the getId function that returns an Id if the user exists in DB otherwise, I get a NullReferenceException.

I call this function in the try catch block in Login. I have a problem with the catch because when the exception is generated, I would like the user to be redirected to the register page. But when I try to execute my code with a non-existing user, I think that I have a kind of infinite loop because my page doesn't stop loading. I don't understand what I'm doing wrong. Need help please



function Login:



 public static void Login(HttpRequest Request, HttpResponse Response, string redirectUri)
{
if (Request.IsAuthenticated)
return;
if (!Request.Form.AllKeys.Contains("id_token"))
return;
string value = Request.Form.Get("id_token");
JObject id_token = JwtDecode(value);
string upn = id_token.GetValue("upn").ToString();
DateTime expiretime = GetExpireTime(id_token);

try
{
SetUser(id_token);
}
catch (Exception ex)
{
Response.Redirect("~/register.aspx");
}
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, upn, DateTime.UtcNow, expiretime, false, id_token.ToString(), FormsAuthentication.FormsCookiePath);
string encryptedcookie = FormsAuthentication.Encrypt(ticket);
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedcookie);
cookie.Expires = expiretime;
Response.Cookies.Add(cookie);
redirectUri = GetRedirectUrl(Request, redirectUri);
Response.Redirect(redirectUri, true);
}


function setUser:



 private static void SetUser(JObject id_token)
{
string email = id_token.GetValue("unique_name").ToString();
string name = id_token.GetValue("given_name").ToString();
DataSet ds;

List<Claim> claims = new List<Claim>()
{
new Claim(ClaimTypes.Email, email),
new Claim(ClaimTypes.Name, GetId(email))
};

string roles= "SELECT name FROM AspNetRoles;
ds = GetDataSet(roles);

if (ds.Tables.Count > 0)
{
foreach (var row in ds.Tables(0).Rows)
claims.Add(new Claim(ClaimTypes.Role, row("name")));
}

ClaimsIdentity claimsIdentity = new ClaimsIdentity(claims, "Cookies");
ClaimsPrincipal principal = new ClaimsPrincipal(claimsIdentity);
HttpContext.Current.GetOwinContext().Authentication.User = principal;
Thread.CurrentPrincipal = principal;
}


function getId:



 public static string getId(string email)
{
return ((new UserManager()).FindByEmail(email)).Id;
}









share|improve this question

























  • What page is the function Login() on? Is it on register.aspx?

    – asherber
    Nov 27 '18 at 0:41











  • no @asherber, the function login() is in the the class that handles authentication

    – kst92
    Nov 27 '18 at 2:17











  • I don't think I have enough information here about how the pieces fit together. What page initially calls Login()? Can you include some of the code that shows how it is called?

    – asherber
    Nov 27 '18 at 15:37











  • Login () is called in the masterpage. it's actually authentication via Azure Directory in an asp.net application

    – kst92
    Nov 27 '18 at 16:41











  • I'm afraid that isn't enough for me to go on. You might be interested in stackoverflow.com/questions/17417366/… Note that Response.Redirect() works by throwing an exception, so that if the code which calls Login() is itself in a try..catch block, that might have something to do with it.

    – asherber
    Nov 27 '18 at 19:33














0












0








0








I have an issue in the Try Catch block of my code below.
In function SetUser, I use the getId function that returns an Id if the user exists in DB otherwise, I get a NullReferenceException.

I call this function in the try catch block in Login. I have a problem with the catch because when the exception is generated, I would like the user to be redirected to the register page. But when I try to execute my code with a non-existing user, I think that I have a kind of infinite loop because my page doesn't stop loading. I don't understand what I'm doing wrong. Need help please



function Login:



 public static void Login(HttpRequest Request, HttpResponse Response, string redirectUri)
{
if (Request.IsAuthenticated)
return;
if (!Request.Form.AllKeys.Contains("id_token"))
return;
string value = Request.Form.Get("id_token");
JObject id_token = JwtDecode(value);
string upn = id_token.GetValue("upn").ToString();
DateTime expiretime = GetExpireTime(id_token);

try
{
SetUser(id_token);
}
catch (Exception ex)
{
Response.Redirect("~/register.aspx");
}
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, upn, DateTime.UtcNow, expiretime, false, id_token.ToString(), FormsAuthentication.FormsCookiePath);
string encryptedcookie = FormsAuthentication.Encrypt(ticket);
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedcookie);
cookie.Expires = expiretime;
Response.Cookies.Add(cookie);
redirectUri = GetRedirectUrl(Request, redirectUri);
Response.Redirect(redirectUri, true);
}


function setUser:



 private static void SetUser(JObject id_token)
{
string email = id_token.GetValue("unique_name").ToString();
string name = id_token.GetValue("given_name").ToString();
DataSet ds;

List<Claim> claims = new List<Claim>()
{
new Claim(ClaimTypes.Email, email),
new Claim(ClaimTypes.Name, GetId(email))
};

string roles= "SELECT name FROM AspNetRoles;
ds = GetDataSet(roles);

if (ds.Tables.Count > 0)
{
foreach (var row in ds.Tables(0).Rows)
claims.Add(new Claim(ClaimTypes.Role, row("name")));
}

ClaimsIdentity claimsIdentity = new ClaimsIdentity(claims, "Cookies");
ClaimsPrincipal principal = new ClaimsPrincipal(claimsIdentity);
HttpContext.Current.GetOwinContext().Authentication.User = principal;
Thread.CurrentPrincipal = principal;
}


function getId:



 public static string getId(string email)
{
return ((new UserManager()).FindByEmail(email)).Id;
}









share|improve this question
















I have an issue in the Try Catch block of my code below.
In function SetUser, I use the getId function that returns an Id if the user exists in DB otherwise, I get a NullReferenceException.

I call this function in the try catch block in Login. I have a problem with the catch because when the exception is generated, I would like the user to be redirected to the register page. But when I try to execute my code with a non-existing user, I think that I have a kind of infinite loop because my page doesn't stop loading. I don't understand what I'm doing wrong. Need help please



function Login:



 public static void Login(HttpRequest Request, HttpResponse Response, string redirectUri)
{
if (Request.IsAuthenticated)
return;
if (!Request.Form.AllKeys.Contains("id_token"))
return;
string value = Request.Form.Get("id_token");
JObject id_token = JwtDecode(value);
string upn = id_token.GetValue("upn").ToString();
DateTime expiretime = GetExpireTime(id_token);

try
{
SetUser(id_token);
}
catch (Exception ex)
{
Response.Redirect("~/register.aspx");
}
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, upn, DateTime.UtcNow, expiretime, false, id_token.ToString(), FormsAuthentication.FormsCookiePath);
string encryptedcookie = FormsAuthentication.Encrypt(ticket);
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedcookie);
cookie.Expires = expiretime;
Response.Cookies.Add(cookie);
redirectUri = GetRedirectUrl(Request, redirectUri);
Response.Redirect(redirectUri, true);
}


function setUser:



 private static void SetUser(JObject id_token)
{
string email = id_token.GetValue("unique_name").ToString();
string name = id_token.GetValue("given_name").ToString();
DataSet ds;

List<Claim> claims = new List<Claim>()
{
new Claim(ClaimTypes.Email, email),
new Claim(ClaimTypes.Name, GetId(email))
};

string roles= "SELECT name FROM AspNetRoles;
ds = GetDataSet(roles);

if (ds.Tables.Count > 0)
{
foreach (var row in ds.Tables(0).Rows)
claims.Add(new Claim(ClaimTypes.Role, row("name")));
}

ClaimsIdentity claimsIdentity = new ClaimsIdentity(claims, "Cookies");
ClaimsPrincipal principal = new ClaimsPrincipal(claimsIdentity);
HttpContext.Current.GetOwinContext().Authentication.User = principal;
Thread.CurrentPrincipal = principal;
}


function getId:



 public static string getId(string email)
{
return ((new UserManager()).FindByEmail(email)).Id;
}






c# asp.net try-catch nullreferenceexception






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 27 '18 at 2:15







kst92

















asked Nov 26 '18 at 20:25









kst92kst92

34




34













  • What page is the function Login() on? Is it on register.aspx?

    – asherber
    Nov 27 '18 at 0:41











  • no @asherber, the function login() is in the the class that handles authentication

    – kst92
    Nov 27 '18 at 2:17











  • I don't think I have enough information here about how the pieces fit together. What page initially calls Login()? Can you include some of the code that shows how it is called?

    – asherber
    Nov 27 '18 at 15:37











  • Login () is called in the masterpage. it's actually authentication via Azure Directory in an asp.net application

    – kst92
    Nov 27 '18 at 16:41











  • I'm afraid that isn't enough for me to go on. You might be interested in stackoverflow.com/questions/17417366/… Note that Response.Redirect() works by throwing an exception, so that if the code which calls Login() is itself in a try..catch block, that might have something to do with it.

    – asherber
    Nov 27 '18 at 19:33



















  • What page is the function Login() on? Is it on register.aspx?

    – asherber
    Nov 27 '18 at 0:41











  • no @asherber, the function login() is in the the class that handles authentication

    – kst92
    Nov 27 '18 at 2:17











  • I don't think I have enough information here about how the pieces fit together. What page initially calls Login()? Can you include some of the code that shows how it is called?

    – asherber
    Nov 27 '18 at 15:37











  • Login () is called in the masterpage. it's actually authentication via Azure Directory in an asp.net application

    – kst92
    Nov 27 '18 at 16:41











  • I'm afraid that isn't enough for me to go on. You might be interested in stackoverflow.com/questions/17417366/… Note that Response.Redirect() works by throwing an exception, so that if the code which calls Login() is itself in a try..catch block, that might have something to do with it.

    – asherber
    Nov 27 '18 at 19:33

















What page is the function Login() on? Is it on register.aspx?

– asherber
Nov 27 '18 at 0:41





What page is the function Login() on? Is it on register.aspx?

– asherber
Nov 27 '18 at 0:41













no @asherber, the function login() is in the the class that handles authentication

– kst92
Nov 27 '18 at 2:17





no @asherber, the function login() is in the the class that handles authentication

– kst92
Nov 27 '18 at 2:17













I don't think I have enough information here about how the pieces fit together. What page initially calls Login()? Can you include some of the code that shows how it is called?

– asherber
Nov 27 '18 at 15:37





I don't think I have enough information here about how the pieces fit together. What page initially calls Login()? Can you include some of the code that shows how it is called?

– asherber
Nov 27 '18 at 15:37













Login () is called in the masterpage. it's actually authentication via Azure Directory in an asp.net application

– kst92
Nov 27 '18 at 16:41





Login () is called in the masterpage. it's actually authentication via Azure Directory in an asp.net application

– kst92
Nov 27 '18 at 16:41













I'm afraid that isn't enough for me to go on. You might be interested in stackoverflow.com/questions/17417366/… Note that Response.Redirect() works by throwing an exception, so that if the code which calls Login() is itself in a try..catch block, that might have something to do with it.

– asherber
Nov 27 '18 at 19:33





I'm afraid that isn't enough for me to go on. You might be interested in stackoverflow.com/questions/17417366/… Note that Response.Redirect() works by throwing an exception, so that if the code which calls Login() is itself in a try..catch block, that might have something to do with it.

– asherber
Nov 27 '18 at 19:33












0






active

oldest

votes












Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53488513%2fmanagement-problem-of-a-nullreferenceexception%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes
















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53488513%2fmanagement-problem-of-a-nullreferenceexception%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Tonle Sap (See)

I get strange results when I access the Sqlitedatabase with Unity C# via XAMPP

Guatemaltekische Davis-Cup-Mannschaft