Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.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项目顶部的react路由器从外部访问路径_Asp.net_Asp.net Mvc_Reactjs_React Router_React Router Dom - Fatal编程技术网

可以使用asp.net项目顶部的react路由器从外部访问路径

可以使用asp.net项目顶部的react路由器从外部访问路径,asp.net,asp.net-mvc,reactjs,react-router,react-router-dom,Asp.net,Asp.net Mvc,Reactjs,React Router,React Router Dom,我有一个在IIS上运行的asp.net项目,并且我有一个页面可以呈现该项目。当从应用程序内部导航时,react路由器似乎完成了工作,我被路由到了正确的页面。当我刷新当前页面或尝试通过键入url访问页面时,问题就会出现。我做了很多搜索,但其他人得到的解决方案似乎对我不起作用。 我已尝试添加React控制器: public class ReactController : Controller { public ActionResult Index() {

我有一个在IIS上运行的asp.net项目,并且我有一个页面可以呈现该项目。当从应用程序内部导航时,react路由器似乎完成了工作,我被路由到了正确的页面。当我刷新当前页面或尝试通过键入url访问页面时,问题就会出现。我做了很多搜索,但其他人得到的解决方案似乎对我不起作用。 我已尝试添加React控制器:

public class ReactController : Controller
    {
        public ActionResult Index()
        {
            return this.View("React");
        }
    }
并添加了一条带有catchall的相应路线

routes.MapRoute("reactApp", "react/{*page}", new { controller = "React", action = "Index" });
除此之外,我还试图补充:

<rewrite>
    <rules>
        <rule name="Rewrite React links" patternSyntax="Wildcard">
            <match url="react/*" />
            <conditions />
            <action type="Rewrite" url="/index.html" appendQueryString="true" />
        </rule>
    </rules>
</rewrite>

到Web.config文件


我已经完全没有办法解决这个问题了。

对我有效的方法是将
NotFound
路由添加到
global.asax
Application\u Start()
,该路由重定向到React应用程序的
index.html
。我在使用React作为UI/客户端和.Net MVC项目作为api时会这样做

这是我在后端需要做的唯一更改,我不做任何重写规则或额外的控制器,它可以工作

protected void Application_Start()
{
    RouteTable.Routes.MapMvcAttributeRoutes();

    // map route for React
    RouteTable.Routes.MapPageRoute("NotFound", "{*url}", "~/index.html");
}
对于React方面,我还必须确保将
路由器
基本名称设置为IIS站点,但我也在
默认网站
下运行我的所有站点,因为我们的组织如何托管我们的Web应用程序,所以它可能不适用于您的情况,但值得注意



点击“刷新”或直接转到url时,实际会发生什么情况?是否出现错误或空白页等?@chrisbyte获取带有404的空白页无法找到该页这似乎对我不起作用。我把整个React应用程序放在Scripts/React文件夹中,因为它是从当前的aspx网站升级而来的,但是并行运行,这样用户就可以暂时退出新的设计。让它工作吧。修改您的答案,以便来自React主页的所有传入URL使用React控制器加载初始React页面。
<Router basename='/mysite'>
</Router>