You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core3.1下ServiceStack抛出IOException 如何关闭路径校验功能

问题原因

该异常由ServiceStack默认的静态文件处理逻辑触发:当收到未匹配到服务接口的请求时,ServiceStack会默认尝试从部署目录读取对应路径的静态文件返回。http://test、php://test这类路径中包含冒号字符,属于Windows系统下的非法目录/文件名,文件系统读取操作直接抛出IOException,还未走到404响应的处理逻辑。

解决方案

方案1:完全禁用静态文件服务(无静态文件托管需求时使用)

直接在AppHost的Configure方法中修改HostConfig配置,关闭静态文件处理逻辑,所有未匹配到接口的请求将直接返回404:

SetConfig(new HostConfig {
    EnableStaticFiles = false
});

方案2:保留静态文件服务,过滤非法路径

如果仍需要托管静态资源,可以通过全局请求过滤器提前拦截包含://的非法路径,直接返回404:

GlobalRequestFilters.Add((req, res, dto) => {
    if (req.PathInfo.Contains("://"))
    {
        res.StatusCode = 404;
        res.EndRequest();
    }
});

也可以将这类特殊前缀添加到HostConfig的IgnorePathPrefixes配置中,让ServiceStack直接跳过对这类路径的静态文件扫描:

SetConfig(new HostConfig {
    IgnorePathPrefixes = new List<string> { "http:", "php:" }
});

内容的提问来源于stack exchange,提问作者Nithin Kumar Narayana Swamy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 22:48:04