2011-01-08 13 views
0
 string filePath = Properties.Settings.Default.audioFilePath.ToString() + " "; 
     filePath = filePath.Replace(" ", "");   // iis6 on 2003 server seems to add a space to the end of the path 
     string audioFilename = filePath + filename; 
     return File(audioFilename, "audio/wav"); 

das ist sehr verwirrend für mich. Auf meiner Dev-Maschine funktioniert das gut und der Pfad ist korrekt. In der Produktionsumgebung fügt IIS6 der Datei "filePath" einen Platz hinzu. Ich fügte die Zeile hinzu, um Leerzeichen durch "" zu ersetzen, und fügte sogar die zusätzliche Zeichenfolge auf meinem lokalen Computer hinzu, um sicherzustellen, dass es funktionierte.IIS6 Leerzeichen am Ende der Datei Pfad hinzufügen

habe ich eine Testansicht anstelle den Pfad weitergeben IIS6, erhalte ich:

c: \ Nachrichten \ Voicemail \ \ <

Beachten Sie die Leerzeichen zwischen \ eingereicht \ abgelegt und < (I hinzugefügt < so kann ich den Raum sehen)

Auf meinem dev Maschine, die ich bekommen

c: \ __ dev \ _proj \ msg \ Nachrichten \ <

ich den Pfad in der Datei web.config tauschen, aber es gibt keine Räume, und trotzdem Leerzeichen ich entfernen, aber irgendwo, wenn es serviert dem Browser scheint IIS6 den Platz hinzugefügt ??? Versuchte auch verschiedene Browser, IE und Firefox, beide dasselbe Ergebnis, so dass es auf IIS ???

Antwort: trimmen war es, und die Antwort, dass es kein Platz war, war tot auf. Es war LF. der Fixcode:

  string filePath = Properties.Settings.Default.audioFilePath; 
     filePath = filePath.TrimEnd();   // iis6 on 2003 server seems to add a space to the end of the path 
     string audioFilename = filePath + filename; 

Antwort

0

Das Problem klingt sehr ungewöhnlich. Aber als eine Arbeit, anstatt Replace zu verwenden, sollten Sie Trim verwenden. Versuchen Sie statt filePath + fileNameSystem.IO.Path.Combine(filePath, fileName). Ich weiß nicht, ob das die Symptome unterdrücken wird oder nicht, aber es könnte einen Versuch wert sein.

+0

Das habe ich mir gedacht. Ich habe das versucht und es scheint genau zu bestimmen, wo das Problem ist, jetzt bekomme ich: Ausnahme Details: System.ArgumentException: Unzulässige Zeichen im Pfad. Das kommt also im Controller-Code vor der Ansicht, glaube ich, also ja, sehr merkwürdig. –

+0

Es klingt wie das zusätzliche Zeichen kein Leerzeichen ist. Haben Sie versucht herauszufinden, was der ASCII-Code jedes Zeichens im audioFilePath ist? Sobald Sie herausfinden, was das schlechte Zeichen ist, können Sie es explizit entfernen. Oder Sie können einen breiteren Ansatz wählen, um durch die Charaktere zu radeln und nur erlaubte Charaktere zu behalten. –

+0

> c: \ messages \ voicemail \ filed \ < 10 <<< das ist der Zeichencode, LF ist es, aber wenn ich gut darin war, den Anweisungen zu folgen und es vorher zu trimmen, war das die Lösung. Also trimmt LF, die aus der Anwendung hinzugefügt wurde, nehme ich an. –

Verwandte Themen