【发布时间】:2019-10-15 20:18:11
【问题描述】:
我已经为使用 Grapevine 的 REST api 设置了几条路由,用于桌面应用程序中的小型网络服务器。 API 工作正常,其他静态文件工作正常,但我无法让路由器将空 url: http://:port/ 路由到指定文件夹中的根 index.html 文件。
web是exe路径下的文件夹,包含index.html和test.html。
我可以为http://xxx:8080/test.html 服务就好了。 http://xxx:8080/ 给出“找不到 GET / 的路由”
网络服务器设置:
ServerSettings settings = new ServerSettings()
{
Host = "*",
Port = "8080",
PublicFolder = new PublicFolder("Web")
};
server = new RestServer(settings);
server.Start();
路线:
[RestResource]
public class WebRequestHandler
{
[RestRoute(HttpMethod = HttpMethod.GET, PathInfo = "/api/v1/live")]
public IHttpContext Live(IHttpContext context)
{
snip
return context;
}
[RestRoute(HttpMethod = HttpMethod.GET, PathInfo = "/api/v1/cmd1/[id]")]
public IHttpContext Cmd1(IHttpContext context)
{
return context;
}
[RestRoute(HttpMethod = HttpMethod.GET, PathInfo = "/api/v1/cmd2/[id]")]
public IHttpContext Cmd2(IHttpContext context)
{
snip
return context;
}
[RestRoute(HttpMethod = HttpMethod.GET, PathInfo = "/api/v1/cmd3/[id]")]
public IHttpContext Cmd3(IHttpContext context)
{
snip
return context;
}
}
index.html 需要在请求根 url 时提供服务。
【问题讨论】:
-
显示你的rest api路由定义
-
添加了路由定义
-
您使用的是哪个版本的 Grapevine?
-
@ScottOffen 4.1.1 nuget 和 githib 31/5/19 我发布了一个答案,我破解了一个解决方法。它似乎是chrome会将url作为'/'发送,并且直接列出的根文件夹的键为空。所以它不会匹配 '/' 到 index.html