【问题标题】:Accepting special characters as input from the URL in C#在 C# 中接受来自 URL 的特殊字符作为输入
【发布时间】:2021-11-29 05:18:58
【问题描述】:
  • 使用语言:C#

  • 输入:缩写或表情符号。

  • 输出:缩写或表情符号的翻译

  • 代码:

    公共类 EmoticonController : ApiController { // GET: api/表情/缩写/简写 [HttpGet] [Route("api/表情/缩写/{shortform}")]

     public string Abbreviation(string ShortForm)
    {
         string outputMessage;
    
         // Switch case that assigns the outputMessage the translation to the abbreviation entered by the user 
         switch (ShortForm)
         {
    
             case "TY":
                 outputMessage = "Thank you";
                 break;
    
             case "(~.~)":
                 outputMessage = "sleepy";
                 break;
    
             default:
                 outputMessage = "Invalid Input";
                 break;
         }
    
         return outputMessage;
     }
    

}

我在Visual Studio中运行上面的代码,输入网址为

localhost/api/表情/缩写/(~.~)

我收到以下错误: C# URL Special characters error

PS:截图 URL 确实与我提到的代码不同。请忽略这一点。我修复了它,但错误仍然存​​在。

【问题讨论】:

标签: c# windows visual-studio


【解决方案1】:

由于您有动作标题“...abbreviation/{shortform}”,因此您需要一个带有路由值的 MVC 样式 Url。这个 Url 对特殊字符非常敏感。您可以尝试对特殊字符进行编码/解码,但这并不总是成功的,有时甚至是不可能的。将查询字符串用作 URL 的一部分要容易得多。您可以通过将操作标题更改为此来实现它

[Route("~/api/emoticon/abbreviation")]
 public string Abbreviation(string ShortForm)

然后你就可以使用这个网址了

localhost/api/emoticon/abbreviation?shortForm=(~.~)

【讨论】:

  • 成功了,谢谢!您能否详细说明为什么 url 必须有一个?缩写后?
  • 不客气!请不要忘记接受答案,因为它很有用。您可以通过单击我的答案侧的复选标记来完成。
猜你喜欢
  • 2021-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-17
  • 1970-01-01
  • 1970-01-01
  • 2019-12-14
  • 1970-01-01
相关资源
最近更新 更多