HTTP get请求无法使用URL编码参数

时间:2018-05-15 08:39:03

标签: asp.net http url get

我目前正在编写一个ASP.NET Core Web API,其中包含一个以加密值作为参数的操作。

我试图测试此操作,并且网址甚至无法在网络浏览器中提交,起初我认为这可能是因为网址过长但我发现了这个问题answer我的网址远低于2000个字符的限制。我已经将参数更改为一个简单的字符串(" hello")并且它提交正常并运行代码。我在调试我的应用程序时尝试使用Edge和IE11,在Edge中根本没有任何事情发生,在IE11中我得到一条消息说:

  

Windows无法找到' http://localhost:5000/api/ ...'检查拼写,然后重试

在任何一种情况下,应用程序中的代码都不会执行(我在控制器构造函数的第一行放置一个断点,而不是被击中)。

我已经在下面列出了其中一个网址的示例,以及我用来生成加密字符串的代码,它使用HttpUtility.UrlEncode来将加密的byte[]数组转换为字符串。

示例网址(不起作用的网址):

  

http://localhost:5000/api/testcontroller/doaction/%95%d6%f8%97%84K%1f%d4%40P%f0%8d%de%27%19%ed%ffAR%9c%c6%d4%b1%83%1e%9fX%ce%9b%ca%0e%d4j%d3Rlz%89%19%96%5dL%b1%16%e9V%14u%c7W%ee%89p%3f%f7%e6d%60%13%e5%ca%00%e9%a2%27%cb%d3J%94%a6%e1%b9%9c%914%06y%7e%0bn%ce%00%e5%7d%98b%85c%fa6m%7d%f7%f1%7b8%26%22%5e%1et%5e%10%0c%05%dd%deFAR%bb%93L%b9-W%e1K%82%d8%cc8%ce%e0%0c%2b%bc%19

动作:

[HttpGet("[action]/{encrypted}")]
public string DoAction(string encrypted)
{
    return "Executed";
}

生成加密字符串:

private string GenerateEncryptedString()
{
    RSACryptoServiceProvider rsaProvider = new RSACryptoServiceProvider();
    byte[] data = HttpUtility.UrlDecodeToBytes("AHMW9GMXQZXYL04EYBIW");
    byte[] encryptedData = rsaProvider.Encrypt(data, true);
    string encryptedString = HttpUtility.UrlEncode(encryptedData);
    return encryptedString;
}

我不确定在将加密数据转换为字符串的方法中是否出错,但我很感激有关如何解决此问题的任何反馈。

1 个答案:

答案 0 :(得分:0)

相关问题