C# 如何将url参数传递到路由?
我将路由添加到项目中。所有操作都正确,但若我将普通url作为第一个参数发送,它将无法正常工作C# 如何将url参数传递到路由?,c#,nancy,C#,Nancy,我将路由添加到项目中。所有操作都正确,但若我将普通url作为第一个参数发送,它将无法正常工作 Get["/{url}/{digit}" 如果我将此参数发送到服务器,则所有参数都能正常工作 localhost:8888/google.com/2 但是如果我用http://www它不起作用 localhost:8888/https://www.google.com/2 如何正确地将url参数传递到路由?我认为这是因为我发送了输入参数 如果确实需要使用GET而不是POST,请尝试HttpUtil
Get["/{url}/{digit}"
如果我将此参数发送到服务器,则所有参数都能正常工作
localhost:8888/google.com/2
但是如果我用http://www
它不起作用
localhost:8888/https://www.google.com/2
如何正确地将url参数传递到路由?我认为这是因为我发送了输入参数 如果确实需要使用GET而不是POST,请尝试
HttpUtility.UrlEncode(“https://google.com/2“
对url进行编码。您必须对作为参数发送的url进行编码:使用: 然后,您的url将如下所示,并且不会出现任何错误: https%3A%2F%2Fwww.google.com%2F2 发送请求: localhost:8888/https%3A%2F%2Fwww.google.com%2F2 或者你可以使用
HttpUtility.UrlEncode();
方法。有关更多信息,请查看。因为您坚持只更改后端,所以可以尝试使用正则表达式捕获您的路由
Get["^(?<url>.*<digit>[0-9]+)$"]
Get[“^(?.[0-9]+)$”]
这应该匹配任何以至少一个数字结尾的url,并将所有内容放在url前面,如下所示:
Get["^(?<url>.*<digit>[0-9]+)$"] = parameters =>
{
var url = parameters.url;
var digit = parameters.digit;
};
Get[“^(?.*[0-9]+)$”]=parameters=>
{
var url=parameters.url;
var数字=parameters.digit;
};
我目前无法验证它是否能像您希望的那样工作,并且为了确保您可以自己调整它,请确保研究如何编写正则表达式如何更改路由?您是否尝试过类似于
“/{url}/{digit}/{digit2}”
?我想更改路由
Get["^(?<url>.*<digit>[0-9]+)$"] = parameters =>
{
var url = parameters.url;
var digit = parameters.digit;
};