Asp.net mvc IIS6向文件路径末尾添加空间

Asp.net mvc IIS6向文件路径末尾添加空间,asp.net-mvc,iis-6,Asp.net Mvc,Iis 6,这让我很困惑。在我的开发机器上,这工作正常,路径正确。在生产站点上,我的IIS6为filePath变量添加了一个空格。我添加了一行以“”替换空格,甚至在本地机器上添加了额外的字符串以确保它正常工作 我将测试视图放置到位,以通过路径,在IIS6上,我得到: c:\messages\voicemail\field\这个问题听起来很不寻常。但是作为一种解决方法,您应该使用Trim,而不是使用Replace。而不是filePath+fileName,而是尝试System.IO.Path.Combine(

这让我很困惑。在我的开发机器上,这工作正常,路径正确。在生产站点上,我的IIS6为filePath变量添加了一个空格。我添加了一行以“”替换空格,甚至在本地机器上添加了额外的字符串以确保它正常工作

我将测试视图放置到位,以通过路径,在IIS6上,我得到:


c:\messages\voicemail\field\这个问题听起来很不寻常。但是作为一种解决方法,您应该使用
Trim
,而不是使用
Replace
。而不是
filePath+fileName
,而是尝试
System.IO.Path.Combine(filePath,fileName)
。我不知道这是否能抑制症状,但值得一试。

我就是这么想的。我试过了,它似乎确实指出了问题所在,现在我得到了:异常详细信息:System.ArgumentException:路径中的非法字符。这是源于我相信视图之前的控制器代码,是的,非常奇怪。听起来附加字符不是空格。您是否尝试过找出audioFilePath中每个字符的ASCII码是什么?一旦发现坏字符是什么,就可以显式删除它。或者,您可以采取更广泛的方法循环使用字符,只保留允许的字符。>c:\messages\voicemail\field\<10
        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");
            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;