【发布时间】:2022-11-14 11:06:03
【问题描述】:
当我传输我的应用程序时(使用 Windows 身份验证)
User.Identity.Name.Split('\\')[1];
像上面一样。
在 iis 中抛出错误,但它在本地运行良好。
System.IndexOutOfRangeException: Index was outside the bounds of the array.
我启用了 Windows 身份验证。我哪里错了?
【问题讨论】:
-
好吧,错误似乎很清楚。您尝试获取 Split() 结果的第二个元素,但如果 Split() 函数没有返回任何内容,那么它将产生 IndexOutOfRangeException。检查 Split() 的结果是否返回任何内容。
-
调试您的应用程序,您会注意到您的用户名根本没有斜线,因此
Split将只提供一个只有一个元素的数组 - 整个名称。但是,由于数组索引是从零开始的,因此您需要使用Split(...)[0]来访问它。 -
它给了我我在视觉工作室的用户名。我检查了它。但是在我将应用程序发布到 iis 之后,它会抛出错误。如果我不使用拆分。 User.Identity.Name 它给我域/用户名。但我只想用户名。
-
但是您使用
\进行拆分,而不是使用/。 -
所以我需要这样使用它吗? txt_Username.Text = User.Identity.Name.Split(...)[0];
标签: c# asp.net iis web-applications iis-express