diff --git a/core/lib/Drupal/Core/Access/AccessManager.php b/core/lib/Drupal/Core/Access/AccessManager.php
index 89e9268f3dabf2bc75c07f392216a7360a94e4a5..3bb2194e91cdb4284bc82f9ea53e1a368a911750 100644
--- a/core/lib/Drupal/Core/Access/AccessManager.php
+++ b/core/lib/Drupal/Core/Access/AccessManager.php
@@ -199,8 +199,8 @@ public function checkNamedRoute($route_name, array $parameters = array(), Accoun
       $route = $this->routeProvider->getRouteByName($route_name, $parameters);
       if (empty($route_request)) {
         // Create a request and copy the account from the current request.
-        $route_request = RequestHelper::duplicate($this->request, $this->urlGenerator->generate($route_name, $parameters));
-        $defaults = $parameters;
+        $defaults = $parameters + $route->getDefaults();
+        $route_request = RequestHelper::duplicate($this->request, $this->urlGenerator->generate($route_name, $defaults));
         $defaults[RouteObjectInterface::ROUTE_OBJECT] = $route;
         $route_request->attributes->add($this->paramConverterManager->enhance($defaults, $route_request));
       }
diff --git a/core/tests/Drupal/Tests/Core/Access/AccessManagerTest.php b/core/tests/Drupal/Tests/Core/Access/AccessManagerTest.php
index 4c2e0fee4c02a83030a4b1fba242621cc7b11a47..0d13959287e7591ad29fb4d4ad48b556f18fde58 100644
--- a/core/tests/Drupal/Tests/Core/Access/AccessManagerTest.php
+++ b/core/tests/Drupal/Tests/Core/Access/AccessManagerTest.php
@@ -13,6 +13,7 @@
 use Drupal\Core\Access\DefaultAccessCheck;
 use Drupal\Tests\UnitTestCase;
 use Drupal\router_test\Access\DefinedTestAccessCheck;
+use Symfony\Cmf\Component\Routing\RouteObjectInterface;
 use Symfony\Component\DependencyInjection\ContainerBuilder;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\Routing\Exception\RouteNotFoundException;
@@ -412,8 +413,6 @@ public function testCheckNamedRoute() {
    * @see \Drupal\Core\Access\AccessManager::checkNamedRoute()
    */
   public function testCheckNamedRouteWithUpcastedValues() {
-    $account = $this->getMock('Drupal\Core\Session\AccountInterface');
-
     $this->routeCollection = new RouteCollection();
     $route = new Route('/test-route-1/{value}', array(), array('_test_access' => 'TRUE'));
     $this->routeCollection->add('test_route_1', $route);
@@ -467,6 +466,66 @@ public function testCheckNamedRouteWithUpcastedValues() {
     $this->assertFalse($this->accessManager->checkNamedRoute('test_route_1', array('value' => 'example'), $this->account));
   }
 
+    /**
+   * Tests the checkNamedRoute with default values.
+   *
+   * @covers \Drupal\Core\Access\AccessManager::checkNamedRoute()
+   */
+  public function testCheckNamedRouteWithDefaultValue() {
+    $this->routeCollection = new RouteCollection();
+    $route = new Route('/test-route-1/{value}', array('value' => 'example'), array('_test_access' => 'TRUE'));
+    $this->routeCollection->add('test_route_1', $route);
+
+    $this->routeProvider = $this->getMock('Drupal\Core\Routing\RouteProviderInterface');
+    $this->routeProvider->expects($this->any())
+      ->method('getRouteByName')
+      ->with('test_route_1', array())
+      ->will($this->returnValue($route));
+
+    $map = array();
+    $map[] = array('test_route_1', array('value' => 'example'), '/test-route-1/example');
+
+    $this->urlGenerator = $this->getMock('Symfony\Component\Routing\Generator\UrlGeneratorInterface');
+    $this->urlGenerator->expects($this->any())
+      ->method('generate')
+      ->with('test_route_1', array('value' => 'example'))
+      ->will($this->returnValueMap($map));
+
+    $this->paramConverter = $this->getMock('\Drupal\Core\ParamConverter\ParamConverterManager');
+    $this->paramConverter->expects($this->at(0))
+      ->method('enhance')
+      ->with(array('value' => 'example', RouteObjectInterface::ROUTE_OBJECT => $route))
+      ->will($this->returnValue(array('value' => 'upcasted_value')));
+
+    $subrequest = Request::create('/test-route-1/example');
+    $class = $this->getMockClass('Symfony\Component\HttpFoundation\Request', array('create'));
+    $class::staticExpects($this->any())
+      ->method('create')
+      ->with('/test-route-1/example')
+      ->will($this->returnValue($subrequest));
+
+    $this->accessManager = new AccessManager($this->routeProvider, $this->urlGenerator, $this->paramConverter, $this->account);
+    $this->accessManager->setContainer($this->container);
+    $this->accessManager->setRequest(new Request());
+
+    $access_check = $this->getMock('Drupal\Core\Access\AccessCheckInterface');
+    $access_check->expects($this->any())
+      ->method('applies')
+      ->will($this->returnValue(TRUE));
+    $access_check->expects($this->any())
+      ->method('access')
+      ->with($route, $subrequest)
+      ->will($this->returnValue(AccessInterface::KILL));
+
+    $subrequest->attributes->set('value', 'upcasted_value');
+    $this->container->register('test_access', $access_check);
+
+    $this->accessManager->addCheckService('test_access');
+    $this->accessManager->setChecks($this->routeCollection);
+
+    $this->assertFalse($this->accessManager->checkNamedRoute('test_route_1', array(), $this->account));
+  }
+
   /**
    * Tests checkNamedRoute given an invalid/non existing route name.
    */