小编JCo*_*r23的帖子

子应用程序中的Asp.net MVC Catchall路由

我有一个MVC应用程序,其子应用程序在IIS中运行另一个MVC项目.两者都使用相同的版本框架并在单独的应用程序池上运行.

我的问题是,我无法让子应用程序在根站点的这个虚拟应用程序文件夹中工作.我收到403.14 Forbidden错误.如果我在子应用程序上启用目录列表,我只需获取MVC应用程序文件的列表.

我想,我已将问题缩小到路由; 子应用程序有一个自定义catchall路由,它处理对站点的所有请求,它是一个CMS应用程序.没有注册其他路线.这是我的自定义路线的代码:

RouteTable.Routes.Insert(0,new CmsRoute(
     "{*path}",
     new RouteValueDictionary(new
     {
          controller = "Page",
          action = "Index"
     }),

     new MvcRouteHandler()));
Run Code Online (Sandbox Code Playgroud)

在自己的站点中的主根应用程序之外运行此应用程序,它工作正常,所有请求都由我的自定义路由处理.但是当我尝试将其作为子应用程序运行时,路由处理程序永远不会被命中.如果我添加开箱即用的标准默认MVC路由:

routes.MapRoute(
     name: "Default",
     url: "{controller}/{action}/{id}",
     defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
Run Code Online (Sandbox Code Playgroud)

然后MVC启动并尝试为请求找到匹配路由.

所以我的问题是为什么我的catchall路由在IIS中的子应用程序中运行时不起作用?

注意:我尝试使用虚拟应用程序文件夹的名称为我的自定义路由中的url添加前缀,但它仍然不起作用,例如:

 RouteTable.Routes.Insert(0,new CmsRoute(
      "subapplication/{*path}",
      new RouteValueDictionary(new
      {
           controller = "Page",
           action = "Index"
      }),

       new MvcRouteHandler()));
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net-mvc asp.net-mvc-routing

14
推荐指数
1
解决办法
1310
查看次数

匹配没有查询字符串的URL路径

我想匹配Url中的路径,但忽略查询字符串.正则表达式应该在查询字符串之前包含可选的尾部斜杠.

应提供有效匹配的示例网址:

/path/?a=123&b=123

/path?a=123&b=123
Run Code Online (Sandbox Code Playgroud)

所以字符串'/ path'应匹配上述任一URL.

我试过以下正则表达式: (/path[^?]+).*

但这只会匹配上面第一个例子的网址: /path/?a=123&b=123

知道如何让它匹配第二个例子没有尾随斜线吗?

正则表达式是一个要求.

javascript regex

7
推荐指数
1
解决办法
1万
查看次数

实体框架CTP 5一对一映射

我有两张桌子:

需求

RequirementId - PK

夹具

FixtureId - PK

RequirementId - FK/NULLABLE /唯一约束

夹具只能有1个要求,其他夹具不应该能够引用相同的要求.夹具不是必须具有要求,它是可选的.

我所做的是,在Sql Server中,我在Fixture表的RequirementId列上放置了一个Unique约束.如何在Entity Framework CTP 5中为此设置映射?

还可以在每个实体上使用双向导航属性吗?

public class Fixture
{
    public int FixtureId { get; set; }
    public Requirement Requirement { get; set; }
}

public class Requirement
{
    public int RequirementId { get; set; }
    public Fixture Fixture { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

也许我错了,所以任何建议都会很棒.提前致谢

entity-framework entity-framework-4 ef4-code-only ef-code-first entity-framework-ctp5

5
推荐指数
1
解决办法
2054
查看次数