果园和路线表

时间:2013-05-29 10:01:41

标签: c# asp.net asp.net-mvc asynchronous orchardcms

一个有趣的。

在一个由六个开发人员组成的团队中,我是唯一一个遇到以下问题的人,所以我们有理由相信这是我本地的事情,但我们似乎无法追查导致它的原因。

使用基于Orchard的站点,使用路径提供程序覆盖默认主页:

public IEnumerable<RouteDescriptor> GetRoutes()
        {
            return new[]{
                new RouteDescriptor{
                    Name = "Homepage",
                    Priority = 85,
                    Route = new Route(
                        "",
                        new RouteValueDictionary{
                            {"area", "Area"},
                            {"controller", "BingoGame"},
                            {"action", "BingoRealm" },
                            {"realm", "realmName" }
                        },
                        new RouteValueDictionary(),
                        new RouteValueDictionary{
                            {"area", "Area"}
                        },
                        new MvcRouteHandler())
                },
                ...

但是,一旦我登录到应用程序(我希望将其带到主页,就会出现以下错误:

  

路由表中没有路由与提供的值匹配。

     

描述:在执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

     

异常详细信息: System.InvalidOperationException:路由表中的路由与提供的值不匹配。

     

来源错误:

Line 160:            public void EndProcessRequest(IAsyncResult result) {
Line 161:                try {
Line 162:                    _httpAsyncHandler.EndProcessRequest(result);
Line 163:                }
Line 164:                finally {

所以在这里,我们有一个地方建立一条路线,但试图访问该路线并且找不到任何东西。

正如我所提到的,只有我自己遇到了这个特殊的错误,我们可以想到我的机器本身没有任何应该影响这个问题的东西。

解决方案?建议?有问题吗?

2 个答案:

答案 0 :(得分:0)

我见过一些失败的例子。这里有一些尝试:

尝试停止Web服务器实例并删除Dependencies中的App_Data文件夹,然后重新启动它。有时Orchard在Visual Studio中编译后拒绝加载新程序集。

发生此问题是因为程序集被锁定在依赖项文件夹中。由于dev server / IIS Express在编译期间仍在运行,因此依赖项中的程序集不会被新的程序集替换。

可以通过停止IIS express / Dev webserver并再次运行项目来修复错误行为。如果您想在此处更安全,请删除依赖项文件夹。

答案 1 :(得分:0)

只是为了让人们知道:事实证明有人已经将我们的错误处理模块从配方中删除了,并且忘记将其重新放入,因此它试图重定向到一个不存在的错误页面我们没有看到的问题,因为我们的错误报告当时没有正常工作。