我到处看到的MVC样式路由示例是这样的:
void Application_Start(object sender, EventArgs e)
{
RegisterRoutes(RouteTable.Routes);
}
public static void RegisterRoutes(RouteCollection routes)
{
routes.Add(new Route
(
"Category/{action}/{categoryName}"
, new CategoryRouteHandler()
));
}
Run Code Online (Sandbox Code Playgroud)
将RouteTable.Routes集合传递给RegisterRoutes()的原因是什么?为什么不呢:
void Application_Start(object sender, EventArgs e)
{
RegisterRoutes();
}
public static void RegisterRoutes()
{
RouteTable.Routes.Add(new Route
(
"Category/{action}/{categoryName}"
, new CategoryRouteHandler()
));
}
Run Code Online (Sandbox Code Playgroud)
除RouteTable.Routes之外的RouteCollection会添加一条路由吗?是不是RouteTable.Routes Web应用程序的 RouteCollection?
我有一个特殊的IRouteHandler,它有一个Map()方法:
public class ChatRouteHandler : IRouteHandler
{
private static bool mapped;
public void Map()
{
if (!ChatRouteHandler.mapped)
{
RouteTable.Routes.Add
(
new Route("chat/{room}/{date}",
new ChatRouteHandler())
);
}
}
Run Code Online (Sandbox Code Playgroud)
是否有理由认为Map()应该接受RouteCollection而不是添加到RouteTable.Routes集合?再次,这个IRouteHandler会添加什么其他RouteCollection?
我有一个在 AWS VPC 中运行的 Lambda 函数。此 Lambda 需要同时访问 RDS 和 DynamoDB,因此需要配置一个 VPC 端点以访问 DynamoDB。我已经设法使用手动配置使其工作,如亚马逊博客中所述,但我正在努力使用 Terraform 将等效的基础设施定义为代码。
我知道我应该aws_vpc_endpoint在 Terraform 中定义一个(此处的文档),但是在为其配置路由表时我有点迷茫。
到目前为止,这就是我所得到的,我不确定这是正确的,我在route_table_ids配置中留下了一个问号。对于记录,如果我不配置任何路由表,端点将正确创建,但 Lambda 无法访问 DynamoDB。
data "aws_vpc" "default" {
default = true
}
resource "aws_vpc_endpoint" "private-dynamodb" {
vpc_id = "${data.aws_vpc.default.id}"
service_name = "com.amazonaws.${var.region}.dynamodb"
route_table_ids = ["${WHAT_SHOULD_I_PUT_HERE?}"]
policy = <<POLICY
{
"Statement": [
{
"Action": "*",
"Effect": "Allow",
"Resource": "*",
"Principal": "*"
}
]
}
POLICY
}
Run Code Online (Sandbox Code Playgroud)
我还检查了如何使用手动配置创建端点,我看到它有一个关联的路由表,其中包含以下设置:
这是一个AWS典型的VPC,它由以下组件组成
步骤1,子网1中的实例(私有IP 172.31.0.5)发送数据包到IP 172.31.16.5(子网2中)。
step2,数据包到达路由表,路由表将数据包重定向到目标local。
第三步,一些神奇的事情发生了。
步骤4、instance(172.31.16.5)接收数据包。
我目前正在使用以下代码注册WCF服务:
var factory = new DefaultServiceHostFactory();
RouteTable.Routes.Add(new ServiceRoute("XXXEndPoint", factory, IXXXEndPoint)));
Run Code Online (Sandbox Code Playgroud)
这一切都很好,但我还需要更改阅读器配额设置的MaxStringContentLength属性.似乎使用默认值8192,无论我是否尝试更改此设置,我想这是来自DefaultServiceModel?
是否有任何合适的钩子来覆盖DefaultServiceModel上的这个设置,或者我应该派生自己的服务主机/模型类,还是我以错误的方式解决这个问题?
任何建议赞赏.
编辑:请注意,绑定的配置必须以编程方式执行(而不是通过配置文件).
谢谢
我想从 RouteTable 检索路由值,但它为空。有人可以帮忙吗?
public static class GetRouteValues
{
public static string GetSomeValue()
{
RouteCollection routes = RouteTable.Routes;
var value = routes["somevalue"].ToString();
return value;
}
}
Run Code Online (Sandbox Code Playgroud)
我想检索此值以在 global.asax 文件中使用,并将其设置为某些路由值的默认值。
string value = GetRouteValues.GetSomeValue();
routes.MapRoute(null,
"{_value}/home",
new
{
_value = value,
controller = "home",
action = "index"
});
Run Code Online (Sandbox Code Playgroud) 我们的网站上有一个区域,人们可以在其中注册并在我们想要托管的网站上获得自己的页面 ~/ pageSlug。我尝试使用 Global.asax 中的规则来执行此操作,但这破坏了允许 ~/ Controller直接映射到 Index 操作的基本默认路由。我不允许在 userSlug 前面放置任何类型的分隔符,因此 ~/p/ pageSlug在这里并不是真正的选项。
在将用户页面添加到路由方面,我循环浏览 App_Start 处的页面并将它们显式添加到 RoutesTable 中。这工作正常,并且我们已经将 AppPool 刷新设置得足够长,使其成为每天一次的任务。这确实给我们留下了 24 小时的时间来为我们的用户“让页面上线”,这是我正在努力解决的问题。
理想情况下,我想要做的是在用户注册后将相关路由动态添加到 RouteTable。我尝试这样做:
RouteTable.Routes.Add(
RouteTable.Routes.MapRoute(
toAdd.UrlSlug + "Homepage",
toAdd.UrlSlug,
new { controller = "Controller", View = "View", urlSlug = toAdd.UrlSlug }
)
);
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用。我在其他地方找不到解决方案,而且我确信我的代码非常幼稚,而且暴露出对路由缺乏了解 - 请帮忙!
在我的Global.asax文件中,Application_Start我RouteTable.Routes通过循环遍历从数据库收集的网页列表来创建一定数量的路由.这很好,所有路线都是根据需要创建和运行的.但是在我的Web应用程序中,用户可以修改数据库,从而修改网页集合.这意味着在应用程序的生命周期中,某些路由变为无效,并且应添加新路由.
我想做的是:当用户将某些内容更改为网页集时,我想清除RouteTable并通过再次循环遍历(修改过的)网页集来重新加载它.
不幸的是,Application_Startin Global.asax只运行一次,即在应用程序开始时运行.我尝试将其移动到Session_Start由于RoutesTable静态而导致不期望的行为.
如何让我的用户能够即时更改网页集,同时让静态与其RouteTable保持"同步"状态?
目前我做这样的事情(伪代码):
public class WebPageInfo // represents a record in the database
{
public string Title; // My nice page
public string Url; // NicePage
public string PhysicalFile; // ~/Page.aspx
}
Run Code Online (Sandbox Code Playgroud)
在Global.asax中:
protected virtual void Application_Start(object sender, EventArgs e)
{
foreach (WebPageInfo webPageInfo in webPageInfos)
{
RouteTable.RegisterRoute(webPageInfo.Title, webPageInfo.Url, webPageInfo.PhysicalFile);
}
}
Run Code Online (Sandbox Code Playgroud)
问题是在应用程序的生命周期中用户可以添加/修改/删除记录webPageInfos,如何使用这些更改来更新RouteTable?
我希望可以从Internet访问我的VPC子网.
更具体地说:必须允许从Internet网关(igw-f43c4690)到我的子网的流量.
为此,我创建了一个路由表并将其与我的子网相关联.
题:
我知道流量将从Internet网关(目标)重定向到IP范围(目标) - 对吗?
为什么我必须在这里命名一个更通用的ip范围(0.0.0.0/0如上图所示),而不是在本地路由中提到的?
为什么我不能命名IP范围,与我的子网中的相同,这里然后将路由表与我的子网相关联?
所以我刚刚学习AWS VPC网络。据我了解,公共子网和私有子网之间的主要区别在于该子网中的流量是否可以路由到互联网网关(通过路由表规则)。
然而,这似乎并不是两者之间的唯一区别。我注意到公共子网将始终启用auto-assign public IP address,而私有子网将禁用它。
因此,作为一个思想实验,我想知道如果我在公共子网中禁用自动分配功能,或在私有子网中启用它,会发生什么?
我可以猜测,如果我在私有子网中启用它,可能不会发生任何事情,因为无论如何都没有流量可以路由到互联网网关。因此,自动分配的 IP 地址将被浪费。
但是第一个场景呢?如果我在公共子网中禁用自动分配,流量是否仍然能够路由到 Internet 网关并最终路由到 Internet?我可以在该公共子网中创建一个 NAT 并将所有 Internet 流量路由到该 NAT,这样我们就不需要将公共 IP 分配给所有公共实例吗?我知道我们可以将这些实例移动到私有子网并将它们路由到 NAT,但我只是好奇我们是否必须为公共子网中的所有实例分配单独的 IP 地址,因为这对我来说似乎有点不必要。
我创建了一个路由表,其中包含引用现有互联网网关 ( IGW ) 的路由规则,并且该路由表与通过 TF 模板创建的新 VPC 关联。然而,同一个 IGW 已附加到另一个VPC。当我应用模板时,它会抛出以下错误,
Error: Error creating route: InvalidParameterValue: route table "X" and network gateway "Y" belong to different networks
status code: 400, request id: ab91c2ab-ef1e-4905-8a78-b6759bc1e250
Run Code Online (Sandbox Code Playgroud)
这是因为互联网网关只能连接到单个 VPC 并且必须驻留在同一 VPC 内吗?或者这个错误是由于其他原因引起的吗?
当您在 terraform 中创建 AWS VPC 时,将为其分配一个默认路由表,该路由表将在 VPC 的 CIDR 块内路由流量。
我想为此添加默认路由,以将所有其他流量发送到 Internet。
routetable amazon-web-services terraform terraform-provider-aws
我是 AWS 新手,我正在尝试了解路由表。
所以我有两个路由表,一个是公共路由表,一个是私有路由表。
以下是公共路由表的路由。
它具有默认路由,其中 VPC 中的流量将定向到与此路由关联的子网中的实例。我创建了另一条路线,来自任何地方的流量都被定向到互联网网关。我的问题是,这意味着子网中的所有流量都定向到互联网吗?
它只有默认路由。我假设来自子网 10.0.0.0/16 的所有流量都定向到与此路由关联的子网中的实例。那是对的吗?
最后,主路由表和非主路由表有什么区别?
我的私有路由表是我的主路由表,而公共路由表不是。我不太明白这是什么意思。
任何提示将不胜感激。
网络新手在这里。从文档中感觉 NSG 和路由表(UDR)都在做同样的事情 - 能够在多个级别(Vnet、子网、VM)定义 ACL
https://docs.microsoft.com/en-us/azure/virtual-network/network-security-group-how-it-works https://docs.microsoft.com/en-us/azure/virtual-network /virtual-networks-udr-overview
那么它们有何不同以及何时使用?
谢谢。
routetable ×13
amazon-vpc ×4
asp.net-mvc ×3
routes ×3
terraform ×3
vpc ×2
asp.net ×1
azure-nsg ×1
c# ×1
global-asax ×1
ip-address ×1
networking ×1
subnet ×1
topology ×1
wcf ×1