I keep getting the above error message, even if I comment out the line that the error is occurring on. Any idea what could be causing this? I’ve tried re-writing the lines with test values, but I still get the same error.
This works perfectly in debug mode, it’s only in the deployment that this came up.
Original code:
Line 21: string domain, username;
Line 22: string text = Page.User.Identity.Name;
Line 23:
Line 24: domain = text.Substring(0, text.IndexOf("\\"));
Line 25: username = text.Substring(text.IndexOf("\\") + 1, text.Length - text.IndexOf("\\") - 1);
Source File: F:\<file path>\Default.aspx.cs Line: 23
Test code (same error):
Line 21: string domain, username;
Line 22: //string text = "TEST"; // Page.User.Identity.Name;
Line 23: // this line is blank
Line 24: domain = "TEST"; //text.Substring(0, text.IndexOf("\\"));
Line 25: username = "TEST"; // text.Substring(text.IndexOf("\\") + 1,
Source File: F:\<file path>\Default.aspx.cs Line: 23
Here’s the stack trace if it helps at all:
[ArgumentOutOfRangeException: Length cannot be less than zero.
Parameter name: length]
System.String.InternalSubStringWithChecks(Int32 startIndex, Int32 length, Boolean fAlwaysCopy) +12681546
Insufficiencies._Default.Page_Load(Object sender, EventArgs e) in F:\<file path>\Default.aspx.cs:23
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +25
System.Web.UI.Control.LoadRecursive() +71
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3048
text.IndexOf("\\")will be returning-1if it cannot find "\" in the string.You are passing
-1through to theSubstring()method, which is invalid.The
Page.User.Identity.Namewill return an empty string if the site is not run with windows integrated authentication exclusively enabled in IIS for that site.Users will likely be accessing the site under anonymous authentication.
From http://msdn.microsoft.com/en-us/library/ff647405.aspx:
To configure Windows authentication