webForumDet fria alternativet

C# The network path was not found

.NETur .NET

7 svar · 413 visningar · startad av yohpops

Medlem sedan feb. 20011 198 inlägg
Frågan#1

Hej.

Jag försöker hämta SID:en från en inloggade användaren.
Jag har en egen klass för detta i ett webb-projekt.

Varför får jag detta felet på den markerade raden?

"The network path was not found"

Jag vet att den finns efter det fungerar med VB6.

Koden är delvis tagen från MSDN.

using System.DirectoryServices;
...
private string getUserSID(string UserName)
{
	string v_ret = "";
	if (UserName != "")
	{
		//try
		//{
			DirectoryEntry userinfo = new DirectoryEntry();
			userinfo.Path = "WinNT://" + UserName.Replace("\\", "/");
			[b]byte[] usrSID = (byte[])userinfo.Properties["objectSID"].Value;[/b]
			string fullsid ="";
			foreach(byte sidar in usrSID)
			{
				if (sidar.ToString().Length == 1)
				{
					fullsid += "0" + (sidar);
				}
				else
				{
					fullsid += (sidar);
				}
			}
			//v_ret = fullsid;
		/*}
		catch(Exception ex)
		{
			v_ret = ex.Message.ToString() + "<br>" + ex.Source.ToString();
		}*/
	}
	else
	{
	
	}
	return v_ret;
}
...

Bry er inte om att jag har kommenterat bort try, catch.

Medlem sedan maj 20021 466 inlägg
#2

Antagligen för att sökvägen är fel.

Från dokumentationen för DirectoryEntry.Path:
Connect to a user on a computer. For example, "WinNT://<domain name>/<computer name>/<user name>". If you are connecting to a local computer, "WinNT://<computer name>/<user name>".

Du verkar ha glömt datornamnet, localhost om det är denna dator.

Medlem sedan feb. 20011 198 inlägg
#3

Men användaren är den som är inloggad och då hänger domänen med.
Jag använder Request.Servervariables.Get("AUTH_USER").
Man ska väl inte behöva skicka med namnet på domänkontrollanten också?

Medlem sedan feb. 20011 198 inlägg
#4

Om jag skickar in domänkontrollanten får jag följande fel på rad 52.

"Unknown error (0x80005004) "


Line 50: 					//userinfo.Path = "WinNT://" + UserName.Replace("\\", "/");
Line 51: 					userinfo.Path = "WinNT://EUROPE/EULDN001/knajhags";
Line 52: 					byte[] usrSID = (byte[])userinfo.Properties["objectSID"].Value;
Medlem sedan feb. 20011 198 inlägg
#5

Ingen som har ett svar på detta?

Medlem sedan feb. 20013 023 inlägg
#6

Om jag minns rätt måste du ha Windows i serverversion alt vara inloggad på en domän för att koden skall funka. Det funkar inte med att att vara lokalt inloggad på en icke-server eftersom du där inte har några directoryobjekt.

Men du verkar ju vara inloggad mot ett AD?

Det kan ju vara ett rättighetsproblem också. Alla har ju inte rätt att leka i AD:et.

Medlem sedan feb. 20011 198 inlägg
#7

Jag är inloggad mot AD.
Och jag har rätt att hämta info om jag använder getObject("WinNT://blabla") i vb6 eller asp.

Medlem sedan feb. 20011 198 inlägg
#8

Det fungerar om jag skickar med användarnamn och lösenord.
Men hur gör jag för att den inloggade användarens information ska skickas?

138 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)