Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.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 mvc prerender.io始终呈现客户端路由列表的默认角度路由的问题_Asp.net Mvc_Angularjs_Seo_Prerender - Fatal编程技术网

Asp.net mvc prerender.io始终呈现客户端路由列表的默认角度路由的问题

Asp.net mvc prerender.io始终呈现客户端路由列表的默认角度路由的问题,asp.net-mvc,angularjs,seo,prerender,Asp.net Mvc,Angularjs,Seo,Prerender,我只是想说我真的很喜欢prerender.io,但我现在有一个问题,我想知道我是否做错了什么,有更多服务经验的人可以帮我解决 我在prerender.io站点上遇到了同样的问题,并且在我使用prerender为本地执行设置的Debian Linux box上也遇到了同样的问题 我的新站点是ASP.NETMVC和angular的混合,angular表示服务器上MVC路由中的工作流(或内容类别) 内容类别的一个示例如下: http://[somesitename]/PublicContent/#!/

我只是想说我真的很喜欢prerender.io,但我现在有一个问题,我想知道我是否做错了什么,有更多服务经验的人可以帮我解决

我在prerender.io站点上遇到了同样的问题,并且在我使用prerender为本地执行设置的Debian Linux box上也遇到了同样的问题

我的新站点是ASP.NETMVC和angular的混合,angular表示服务器上MVC路由中的工作流(或内容类别)

内容类别的一个示例如下:

http://[somesitename]/PublicContent/#!/news

http://[somesitename]/PublicContent/#!/welcome
MVC服务器端路由为:

http://[somesitename]/PublicContent
#/新闻#/欢迎是角度应用程序路线,欢迎也是默认路线

将URL发送到prerender.io服务或本地实例时:

http://service.prerender.io/http://[somesitename]/PublicContent/#!/news
prerender服务仅用于渲染:

http://[somesitename]/PublicContent
并且在#之后忽略客户端路由

因此,对于每个MVC路由的所有页面,我只得到多次呈现的默认路由

这是prerender.io的错误吗?或者我没有未正确配置的东西

我确实有:

<meta name="fragment" content="!">


如果这有关系的话,我所有页面的头部都会出现问题。

在prerender.io上与大家讨论过,我对Asp.Net MVC中间件所做的一次修改似乎是对该代码的一次不正确的修改,而这本身就是不正确的(基本代码删除了?\u escpaed\u fragment\u=/并将其替换为空,我修改了代码以删除?\u escpaed\u fragment\u=/并将其替换为

prerender.io服务希望?\u escpaed\u fragment.=/存在于URL中,如果找到它,它将在调用您的网站缓存页面之前将其替换为。它不希望找到,因此如果URL存在,它将无法正确处理该URL

因此,如果您使用的是Asp.Net MVC中间件,您应该注释掉PrerenderModule.cs中的以下代码:

        // Remove the _escaped_fragment_ from the URL if it exists!
        var escapedFull = "?" + _Escaped_Fragment + "=/";
        if (url.Contains(escapedFull))
        {
            url = url.Replace(escapedFull, string.Empty);
        }