2

这只是一个为什么的问题,因为它可能是一个错误的概念:(

以下是 ASP.net Web Api Project 中默认的 Web API 配置

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }
}

我试着改变

api / {控制器} / {id}

# / {控制器} / {id}

工作,雄心勃勃的部分是它被忽略(NO 404),好像我正在路由到我的主页,但是其他消费完全像

- / {控制器} / {id}

似乎是编码问题的概念错误部分,有什么帮助吗?

4

2 回答 2

1

“#”符号被浏览器解释为书签,通常不会发送到服务器。我建议运行诸如 Fiddler 之类的工具或浏览器的开发工具(例如 IE 中的 F12 工具),然后查看实际发送到服务器的请求。

于 2013-02-14T06:50:51.523 回答
1

#是错误的选择。此部分仅在客户端上相关,并允许滚动到名称等于散列后部分的元素

检查这个答案: https ://stackoverflow.com/a/967659/1679310

提炼:

...恐怕不会,因为哈希(包括#的字符串)永远不会传递给服务器,它只是浏览器的行为属性。但是,$_SERVER['REQUEST_URI'] 变量将包含其余部分。

因此,虽然(包括)之后的#部分永远不会发送到服务器,但您不能将其用作路由的一部分

于 2013-02-14T06:51:29.723 回答