Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.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
Asp.net Can';在MVC应用程序中找不到已注册的路由。少了什么?_Asp.net_Asp.net Mvc_Asp.net Mvc 4_Asp.net Web Api2 - Fatal编程技术网

Asp.net Can';在MVC应用程序中找不到已注册的路由。少了什么?

Asp.net Can';在MVC应用程序中找不到已注册的路由。少了什么?,asp.net,asp.net-mvc,asp.net-mvc-4,asp.net-web-api2,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Asp.net Web Api2,我有一个MVC4应用程序。我添加了一个试图调用的简单控制器Get方法。当我尝试加载页面时,总是出现404错误 调用方法的HTML页面-demo.HTML页面: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head><title></title></head> <body> <video width="480" height

我有一个MVC4应用程序。我添加了一个试图调用的简单控制器Get方法。当我尝试加载页面时,总是出现404错误

调用方法的HTML页面-demo.HTML页面:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title></title></head>
<body>
    <video width="480" height="320" controls="controls" autoplay="autoplay">
        <source src="/vdo/?id=small.mp4" type="video/mp4" />
    </video>
</body>
</html>
路线登记:

public override void RegisterArea(AreaRegistrationContext context)
{
      context.MapRoute(
                "Vdo",
                "vdo/{id}",
                new { controller = "Vdo" },
                new string[] { "<Namespace>.Controllers" }
            );    
}
公共覆盖无效注册表区域(AreaRegistrationContext)
{
context.MapRoute(
“Vdo”,
“vdo/{id}”,
新建{controller=“Vdo”},
新字符串[]{.Controllers“}
);    
}
我错过了什么?

以下是我在浏览器中看到的内容:

这是我在调试模式下得到的实际错误:


路径“/vdo/small.mp4”的控制器未找到或未实现IController。

使用路由时,不需要使用querystring在url中传递数据。我认为你的问题在你的url,你写你的路线规则如下-
vdo/{id}
但是您正在使用querystring请求控制器功能,您应该将url从
/vdo/?id=small.mp4
更改为-
/vdo/small.mp4

我认为这将解决您的问题。

我认为您需要映射一个默认操作以获得

  public override void RegisterArea(AreaRegistrationContext context)
    {
          context.MapRoute(
                    "Vdo",
                    "vdo/{id}",
                    new { controller = "Vdo", action = "Get" },
                    new string[] { "<Namespace>.Controllers" }
                );    
    }
公共覆盖无效注册表区域(AreaRegistrationContext)
{
context.MapRoute(
“Vdo”,
“vdo/{id}”,
新建{controller=“Vdo”,action=“Get”},
新字符串[]{.Controllers“}
);    
}

然后您可以使用
/vdo/small.mp4
访问它。

这没有任何区别。没有区别。实际错误仍然是-“路径'/vdo/small.mp4'的控制器未找到或未实现IController”。找到此项:,您的问题似乎是处理程序不知道如何处理id参数中的句点。否。如果我去掉这个点,它仍然有同样的问题。你能试着把基类改成Controller而不是ApiContoller吗?这会带来其他问题。代码的某些部分将无法编译。
  public override void RegisterArea(AreaRegistrationContext context)
    {
          context.MapRoute(
                    "Vdo",
                    "vdo/{id}",
                    new { controller = "Vdo", action = "Get" },
                    new string[] { "<Namespace>.Controllers" }
                );    
    }