Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在url中显示具有特殊字符的图像_C#_Asp.net_Special Characters - Fatal编程技术网

C# 在url中显示具有特殊字符的图像

C# 在url中显示具有特殊字符的图像,c#,asp.net,special-characters,C#,Asp.net,Special Characters,使用,我正在读取一个图像文件夹,然后将这些图像显示在网页上 目前,除了具有特殊字符的图像外,所有这些都可以正常工作 带有“&”符号的名称显示断开的图像链接。有没有什么方法可以在不更改图像名称的情况下显示图像 我试过了 var images = from image in Directory.EnumerateFiles(Server.MapPath("~/_resources/game_icon"), "*.*", SearchOption.AllDirectories)

使用,我正在读取一个图像文件夹,然后将这些图像显示在网页上

目前,除了具有特殊字符的图像外,所有这些都可以正常工作

带有“&”符号的名称显示断开的图像链接。有没有什么方法可以在不更改图像名称的情况下显示图像

我试过了

var images =
            from image in Directory.EnumerateFiles(Server.MapPath("~/_resources/game_icon"), "*.*", SearchOption.AllDirectories)
            let filename = Path.GetFileNameWithoutExtension(image)
            let relativeLocation = Path.GetFullPath(image).Replace(Server.MapPath("~"), string.Empty).Replace("\\", "/")//.Replace(Path.GetFileName(image), HttpUtility.UrlEncode(Path.GetFileName(image)))
            let splitted= string.Join("/", relativeLocation.Split('/').ToList().Select(p => Server.UrlEncode(p)))
            let url = ResolveUrl("~/" + splitted)
            where image.ToLower().Contains(txtGameName.Text.ToLower())
            select new
            {
                Filename = filename,
                Url = url
            };

但是所有图像都会中断。

在图像名称上使用HttpServerUtility.HtmlEncode。请参见

我认为在这种情况下,最好使用Server.UrlEncode。这里有一个链接

我发现这只是一个潜在危险的请求。从客户端检测到路径值错误

使用



修复所有问题。

我无法在静态环境中访问该问题。这发生在一个按钮点击。使用
Server.HtmlEncode
也不起作用。图像仍然损坏。图像URL现在是
是,请按照@Timur的建议使用HttpUtility.UrlEncode。对不起,我有一个高级时刻。如果我使用它,则不会显示任何图像
此图像一直工作到
UrlEncode
您可能需要在路径的每个单独组件上运行UrlEncode,类似于
string.Join(“/”,path.Split(“/”).ToList()。选择(p=>Server.UrlEncode(p))
Server.UrlEncode
也会更改URL中的
/
,然后会打断每个图像。
<system.web>
    <httpRuntime requestPathInvalidCharacters="&lt;,&gt;,%,&amp;,:,\,?" />
</system.web>