ASP.NET newline problem på ubuntu 11.04 med mono

Tags:    windows linux asp.net c#

Hej Alle.

Jeg har lavet en ASP.NET side som jeg har testet i visual studio 2010, undervejs som jeg lavede den. I dette test miljø virkede det bare som en perle. Nu lagde jeg den så over på en Linux Ubuntu 11.04 server som køre mono, hvor jeg kun var nød til at ændre stierne til nogle filer som jeg skriver til men ellers er det jo plug and play eller overfør og play :p

Men jeg har en iretterende fejl. Når jeg skriver til mine filer gør jeg det med en environment.newline. I windows funger dette bare men i linux giver det mig en double-newline istedet for en single-newline. Så jeg har en tom linje, og dette er katastrofalt i mit setup. Da siden ikke kan håndterre det.

Men jeg prøver at finde ud af hvorfor linux laver en double-newline i stedet for en single, som er meningen. Jeg får den samme fejl med WriteLine og "\n". Linux bruger "\n" og ikke "\r\n" som Windows.

Skal ogsaa lige siges at sitet er paa samme antal linjer paa windows og linux. Saa de er ingen forskel paa de to udover stierne til filerne som er forskellige paa de to OS.

Nogen der har haft erfaringer med dette problem?



Indlæg senest redigeret d. 06.10.2011 12:55 af Bruger #16700
3 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Uden at være gravet dybere ned i din kode, så er Environment.NewLine en konstant, indeholdende \r\n. Og det er på Windows. Det betyder også at Environment.NewLine kan give uforudsete problemer på andre karaktersæt, da den f.eks. på mono returnerer \n.

Hvad giver det, hvis du i stedet for laver en write(@"\n"......?



Indlæg senest redigeret d. 06.10.2011 13:05 af Bruger #9814
Jeg får det samme resultat på linux lige meget om jeg bruger
"\n" + tekst
WriteLine(tekst);
environment.newline + tekst

Og så kender jeg ikke lige flere måder at skrive på :p

Hvad fra koden ville du mene, der kunne give dig en indblik i problemer? Jeg poster gerne metoden eller andet, hvis du mener det kunne hjælpe.



double newline siger du.. Mener du at der er en helt blank linie imellem?
Er det ikke noget du "blot" kan teste for og så ignorere? Fx at hvis line.trim().lenght == 0 så continue?
Men ellers ville metoden da gerne hjælpe og i hvilken kontekst og hensigt den skal fungere :)



t