Asp.net mvc 在MVC中,Encryption.Encrypt的UrlEncode在生产环境中不起作用,并出现404错误

Asp.net mvc 在MVC中,Encryption.Encrypt的UrlEncode在生产环境中不起作用,并出现404错误,asp.net-mvc,asp.net-mvc-4,encryption,visual-studio-2015,web-config,Asp.net Mvc,Asp.net Mvc 4,Encryption,Visual Studio 2015,Web Config,在我的MVC应用程序中,为了在querystring中加密我的用户ID,我添加了以下代码行: return HttpUtility.UrlEncode(Encryption.Encrypt(ui.UserId.ToString())); 及 首先我犯了这个错误 请求过滤模块配置为拒绝包含双转义序列的请求。我通过添加configuration/system.webServer/security修复了这个问题/requestFiltering@allowDoubleEscaping在web.con

在我的MVC应用程序中,为了在querystring中加密我的用户ID,我添加了以下代码行:

return HttpUtility.UrlEncode(Encryption.Encrypt(ui.UserId.ToString()));

首先我犯了这个错误 请求过滤模块配置为拒绝包含双转义序列的请求。我通过添加configuration/system.webServer/security修复了这个问题/requestFiltering@allowDoubleEscaping在web.confg文件中设置

<system.webServer>  
<security>
      <requestFiltering allowDoubleEscaping="true" />
</security>
</system.webServer>

然后它开始在本地工作,当我将此代码移动到生产时,出现以下错误: 404-找不到文件或目录。
您正在查找的资源可能已被删除、名称已更改或暂时不可用。

与其加密用户id,为什么不向用户颁发GUID并将其存储在具有用户真实id的交叉引用表中。否,我有其他限制,我必须用url加密来解决这个问题。我发现这个问题只发生在url中有“+”符号的url上,我的意思是当生成的加密url有“+”符号时,就会出现这个问题,否则它工作正常。“+”符号因为空间的原因而存在。所以你可以用下划线(“u”)或其他东西来替换那个空格。如果加密URL中的“+”替换为“”,但在另一方面,当我们要解码它时,我们如何区分+符号的原始“”和“”呢。
<system.webServer>  
<security>
      <requestFiltering allowDoubleEscaping="true" />
</security>
</system.webServer>