webForumDet fria alternativet

problem med rättigheter till fil

.NET

11 svar · 400 visningar · startad av Mc Fetto

Medlem sedan nov. 20022 355 inlägg
Frågan#1

När jag debugar ett program som skapar en xml-fil med hjälp av XMLTextWriter, sedan stoppar programet och kör igång det igen och vill använda filen så får jag felmeddelandet att filen används av ett annat program.

Hur kommer jag åt detta problemet?

					XmlTextWriter writer = new XmlTextWriter("jhk.xml", null);
					writer.Formatting = Formatting.Indented;
					writer.WriteStartDocument();
					writer.WriteStartElement("user");
					//writing a encrypted version of name and password
					writer.WriteElementString("name", crypt.Encrypt(tBUsername.Text.Trim(), "test"));
					writer.WriteElementString("password", crypt.Encrypt(tBPassword.Text.Trim(), "test"));
					writer.WriteEndElement();
					writer.WriteEndDocument();
					writer.Flush();
					writer.Close();

Antar att det är ngt jag missar när jag skapar fieln ;)

Medlem sedan apr. 2004778 inlägg
#2

Kan det vara samma fel som när man kör en Accessdatabas och inte har några skrivrättigheter satta?
Kolla mappen din xml-fil ligger i eller ska ligga i. Se till att aspnet användaren har skrivrättigheter och att rutan för att ärva föräldrar inte är iklickad.

Medlem sedan nov. 20022 355 inlägg
#3

Något i den stilen kan det vara, men jag får inte rätt på det. Även om jag kör exe-filen så uppkommer samma problem.

Medlem sedan apr. 2004778 inlägg
#4

Ge flera användare skrivrättigheter för att testa. T.ex. System och Network om de inte har. Jag är nästan 100 på att det har med rättigheterna att göra.
Och glöm inte rutan för att ärva förälders rättigheter. Om den är iklickad på mappen så funkar det inte.

Medlem sedan nov. 20022 355 inlägg
#5

Jag hittar tyvärr inte ngt allternativ på mappegenskapen där jag kan välja att ärva föräldrars rättigheter :(

Jag kan ju säga att om jag under samma programkörning gör båda momenten (skapar fil och tar bort den) så fungerar allt gallant!

Medlem sedan sep. 20011 914 inlägg
#6

Ser inte varför det skulle ha med rättigheter att göra, brukar vara annat felmeddelande. Du kanske i debug mode stoppar koden innan programmet nått writer.Close() och därför inte kommer åt filen för att XmlTextWriter inte släppt filen.

Medlem sedan nov. 20022 355 inlägg
#7

Läste första inlägget igen och bör verkligen lägga till ett par saker... :r

När jag skapat filen, så har jag inte ngr problem utean det är när jag sedan vill ta bort filen med hjälp av

File.Delete("jhk.xml");

och jag kollade nu attfilen stängs innan jag vill ta bort den så så är tyvärr inte fallet.

Medlem sedan nov. 20022 355 inlägg
#8

OK, nu har jag satt rättigheterna till ASPNET, SYSYTEM och nätverk + den som är inloggad till att ha fullständiga rättigheter utan några arv. Men problemet kvarstår :(

Medlem sedan nov. 20022 355 inlägg
#9

Ingen? :(

Medlem sedan apr. 20012 266 inlägg
#10

Är det ingen ASP.NET applikation behöver inte ASPNET ha några som helst rättigheter. Som Dino säger kan det vara så att filen inte stängs korrekt och blir då låst. T.ex om ett Exception kastas innan .Close() kommer inte den koden att köras. För att slippa problem med att resurser inte frigörs kan man använda using() eller try ... finally.

I fall objektet implanterar IDisposable:

using(MittObjekt objekt = new MittObjekt())
{
   // gör något
}

Om inte IDisposable:

MittObjekt objekt = new MittObjekt();

try
{
   objekt.Open();
   // gör något
}
finally
{
   objekt.Close();
}
Medlem sedan nov. 20022 355 inlägg
#11

tyvärr så använder jag mig av finally..

					try
					{
						writer = new XmlTextWriter("jhk.xml", null);
						writer.Formatting = Formatting.Indented;
						writer.WriteStartDocument();
						writer.WriteStartElement("user");
						//writing a encrypted version of name and password
						writer.WriteElementString("name", crypt.Encrypt(tBUsername.Text.Trim(), "test"));
						writer.WriteElementString("password", crypt.Encrypt(tBPassword.Text.Trim(), "test"));
						writer.WriteEndElement();
						writer.WriteEndDocument();
						writer.Flush();
						
					}
					finally 
					{
						writer.Close();
					}

Det konstiga är att första gången när jag skapar filen så är det inga problem att ta bort den. Men om jag sedan startar programmet en annan gång och försöker ta bort filen så kastas det exceptions. :(

Medlem sedan nov. 20022 355 inlägg
#12

Pinsamt värre :r
Missade att stänga en reader när jag läser in data från filen om den redan är skapad. Blir väl så när man gör det lite halvslavsigt. Tack för all hjälp och ideér, har ju fåt en större inblick i rättigheterna på asp ivf :D

263 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)