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;
これは私が考えたものです。私はそれを試みたが、どこに問題があるのかを突き止めるように思える。例外の詳細:System.ArgumentException:パスに不正な文字がある。 これは、私が信じているビューの前にコントローラコードに由来しているので、非常に奇妙です。 –
追加の文字はスペースではないようです。あなたは、audioFilePath内の各文字のASCIIコードが何であるかを調べることを試みましたか?悪いキャラクターが何であるかを見つけたら、それを明示的に削除することができます。または、文字を循環させ、許可された文字のみを維持するという、より広範なアプローチをとることができます。 –
> c:\ messages \ voicemail \ filed \ < 10 <<<は文字コードですが、LFはそれですが、私が指示に従っていれば、早く修正を試みました。だから、トリムは私が推測するapplicationSettingから追加されたLFを取り除きます。 –