2011-01-08 15 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"); 

これは私にとって非常に難解です。私の開発マシンでは、これはうまく動作し、パスは正しいです。本番サイトでは、IIS6はfilePath変数にスペースを追加します。私はスペースを ""と置き換える行を追加し、それが動作していることを確認するためにローカルマシンに追加の文字列を追加しました。IIS6はファイルパスの末尾にスペースを追加します

私は私が得るIIS6で、パスを渡すための場所でテストビューを置く:

C:\メッセージ\ <

お知らせ\の間に空白\提出されたボイスメール\を\提出し<は私が手に私のdevのマシンで

(私はそう、私は宇宙を見ることができ<を追加しました)

C:\ __ DEV \ _proj \ MSG \メッセージ<

\私は、web.configファイルでパスを交換していますが、スペースがない、ととにかく、私はスペースを削除するんだけど、どこかにそれがあるときそれはIIS6のスペースを追加するブラウザに役立った???別のブラウザも試しましたが、IEとFirefoxは両方とも同じ結果ですので、IISを指していますか?

回答:トリムはそれだったし、スペースではないという応答は死んでいた。それはLFでした。 固定コード:

  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; 

答えて

0

問題は非常に珍しいですね。しかし、回避策として、Replaceを使用するのではなく、Trimを使用してください。 filePath + fileNameの代わりにSystem.IO.Path.Combine(filePath, fileName)を試してください。私はこれが症状を抑えるかどうかは分かりませんが、ショットに値する可能性があります。

+0

これは私が考えたものです。私はそれを試みたが、どこに問題があるのか​​を突き止めるように思える。例外の詳細:System.ArgumentException:パスに不正な文字がある。 これは、私が信じているビューの前にコントローラコードに由来しているので、非常に奇妙です。 –

+0

追加の文字はスペースではないようです。あなたは、audioFilePath内の各文字のASCIIコードが何であるかを調べることを試みましたか?悪いキャラクターが何であるかを見つけたら、それを明示的に削除することができます。または、文字を循環させ、許可された文字のみを維持するという、より広範なアプローチをとることができます。 –

+0

> c:\ messages \ voicemail \ filed \ < 10 <<<は文字コードですが、LFはそれですが、私が指示に従っていれば、早く修正を試みました。だから、トリムは私が推測するapplicationSettingから追加されたLFを取り除きます。 –

関連する問題