C# 允许加号+;登录URL

C# 允许加号+;登录URL,c#,asp.net,url,get,rfc,C#,Asp.net,Url,Get,Rfc,我正在为我的网站写一个GET计算器。此计算器计算URL的exp参数中提供的表达式。我知道这是反对RFC的,但是有没有办法允许+登录URL 我发现的一种方法是向我的用户提供一个文档,在那里他们将替换一些特殊的标记以添加加号,如[op:plus]。然后,在ASP.NET通用处理程序后面的代码中,它被替换为+。但是如果RFC中有任何东西允许+签名,那就太好了。这样我就不必提供任何文档。在URL查询字符串参数中编码+符号的正确方法是%2B。ASP.NET将自动为您解码为+ 如果用户使用,此编码将自动进行

我正在为我的网站写一个GET计算器。此计算器计算URL的
exp
参数中提供的表达式。我知道这是反对RFC的,但是有没有办法允许
+
登录URL


我发现的一种方法是向我的用户提供一个文档,在那里他们将替换一些特殊的标记以添加加号,如
[op:plus]
。然后,在ASP.NET通用处理程序后面的代码中,它被替换为
+
。但是如果RFC中有任何东西允许
+
签名,那就太好了。这样我就不必提供任何文档。

在URL查询字符串参数中编码
+
符号的正确方法是
%2B
。ASP.NET将自动为您解码为
+

如果用户使用,此编码将自动进行:

string equation = "1 + 2 - 3";
Console.WriteLine(HttpUtility.UrlEncode(equation)); 
输出:

1+%2b+2+-+3


对URL查询字符串参数中的
+
符号进行编码的正确方法是
%2B
。ASP.NET将自动为您解码为
+

如果用户使用,此编码将自动进行:

string equation = "1 + 2 - 3";
Console.WriteLine(HttpUtility.UrlEncode(equation)); 
输出:

1+%2b+2+-+3



你的用户是通过浏览器访问它,还是通过程序访问,或者两者兼而有之,这是一种API,可以以用户喜欢的任何方式访问。如果用户输入+符号,现在会发生什么情况?@mason asp.net正在用URL中的空格替换+。因此,请编写自己的方法来解析请求中的操作。RawUrl。您的用户是通过浏览器访问它,还是通过编程访问,或者两者兼而有之?@mason,这是一种API,可以以用户喜欢的任何方式访问。如果用户输入+符号,现在会发生什么?@mason asp.net正在用URL中的空格替换+。因此,请编写自己的方法来解析
请求中的操作。RawUrl
。好的,但asp.net正在用URL中的空格替换
+
。您的字符串将类似于
12-3
@ErikPhilips当使用
Request[“exp”]
获取参数时,如何使用此字符串?它将
+
替换为空格。@AishwaryaShiva:问题是:如果用户想用
1+2-3
值调用您的服务,他应该这样调用:
http://example.com/yourService?exp=1+%2b+2+-+3
。然后得到正确的值。如果他这样称呼它:
http://example.com/yourService?exp=1+2-3
,他违反了RFC(他传输的是一个编码的空格,而不是一个编码的加号)。@Heinzi是的,这是我在问题中提到的同一个问题。用户必须知道
%2B
是加号还是我自己的规则
[op:plus]
。好的,我现在意识到我们不能反对RFC。但RFC中必须有一条规则,允许任何包含在双引号中的内容。你能给我提供一个RFC链接,其中使用了
+
符号的指示吗?@AishwaryaShiva:但RFC中必须有一条规则,允许任何包含在双引号中的内容。不。这不是关于“允许”,而是关于“编码”。这就像说“但是摩尔斯电码中必须有一条规则,允许我传输点和破折号以外的东西,如果我用双破折号括起来的话”。莫尔斯电码中的点和破折号与英语中的点和破折号不同。同样,URL中的
+
&
=
与实际值
+
&
=
不同。。。好的,但是asp.net正在用URL中的空格替换
+
。您的字符串将类似于
12-3
@ErikPhilips当使用
Request[“exp”]
获取参数时,如何使用此字符串?它将
+
替换为空格。@AishwaryaShiva:问题是:如果用户想用
1+2-3
值调用您的服务,他应该这样调用:
http://example.com/yourService?exp=1+%2b+2+-+3
。然后得到正确的值。如果他这样称呼它:
http://example.com/yourService?exp=1+2-3
,他违反了RFC(他传输的是一个编码的空格,而不是一个编码的加号)。@Heinzi是的,这是我在问题中提到的同一个问题。用户必须知道
%2B
是加号还是我自己的规则
[op:plus]
。好的,我现在意识到我们不能反对RFC。但RFC中必须有一条规则,允许任何包含在双引号中的内容。你能给我提供一个RFC链接,其中使用了
+
符号的指示吗?@AishwaryaShiva:但RFC中必须有一条规则,允许任何包含在双引号中的内容。不。这不是关于“允许”,而是关于“编码”。这就像说“但是摩尔斯电码中必须有一条规则,允许我传输点和破折号以外的东西,如果我用双破折号括起来的话”。莫尔斯电码中的点和破折号与英语中的点和破折号不同。同样,URL中的
+
&
=
与实际值
+
&
=
不同。。。