为什么我得到此代码“不支持 URI 格式”

本文关键字:不支持 URI 格式 代码 为什么 | 更新日期: 2023-09-27 18:35:10

我有这段代码,应该为"uripath"字符串变量分配一个字符串路径值:

private readonly FileStream _fileStream;
. . .
string uriPath = GetExecutionFolder() + "''AppLogMsgs.txt";
_fileStream = File.OpenWrite(uriPath); 
. . .
private string GetExecutionFolder()
{
    return Path.GetDirectoryName       
(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);
}

。但它在尝试执行"_fileStream = File.OpenWrite(uriPath);"行时崩溃。

为什么,我需要做些什么来纠正这种反抗的发展?

"uriPath"崩溃时的值为:

file:''

C:''Projects''ReportScheduler''ReportScheduler''bin''Debug''AppLogMsgs.txt

为什么我得到此代码“不支持 URI 格式”

如果您的目的是知道包含清单的加载文件的位置,则可以将方法更改为

private string GetExecutionFolder()
{
    return Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
}

查看位置属性

AssemblyName.CodeBase属性以 URL 的形式返回程序集的位置,并且由于程序集是本地文件,字符串以 File:'' 开头

只需要从uriPath中删除这部分,并且应该按预期工作:

string uriPath = GetExecutionFolder() + "''AppLogMsgs.txt";
uriPath = uriPath.Replace("file:''", string.Empty);
_fileStream = File.OpenWrite(uriPath);