Javascript 查询字符串中编码的HTML标记仍导致500错误

Javascript 查询字符串中编码的HTML标记仍导致500错误,javascript,html,asp.net,url,query-string,Javascript,Html,Asp.net,Url,Query String,希望这是一个快速修复 我将从AngularJS应用程序向用C编码的web API发送一个查询字符串。该字符串包含一个消息值,该值可能包含url编码的HTML标记,也可能不包含url编码的HTML标记 以下是一个基本示例: msg = "<a>" querystring = "/SERVERPATH/?id=1&msg=%3Ca%3E" 将上面的字符串发送到my API会导致500错误,并且msg值实际上从未到达服务器。另一方面,在a之前和之后添加一个空格会使一切都很好地工作

希望这是一个快速修复

我将从AngularJS应用程序向用C编码的web API发送一个查询字符串。该字符串包含一个消息值,该值可能包含url编码的HTML标记,也可能不包含url编码的HTML标记

以下是一个基本示例:

msg = "<a>"
querystring = "/SERVERPATH/?id=1&msg=%3Ca%3E"
将上面的字符串发送到my API会导致500错误,并且msg值实际上从未到达服务器。另一方面,在a之前和之后添加一个空格会使一切都很好地工作

msg = "< a >"
querystring = "/SERVERPATH/?id=1&msg=%3C%20a%20%3E"
是否存在我不知道的特殊类型的验证,是否有一种方法可以自己配置这些规则


这可能与web.config有关,但我可能完全错了。任何输入都将不胜感激。

错误代码500表示内部服务器错误。这意味着您的代码确实到达了web服务。通过您的示例,在“a”之前和之后放置一个空格可以使一切正常工作,我非常确定请求验证在您的web服务中失败了。要了解请求验证,请访问

警告:不要在web服务上禁用请求验证。这样做会造成巨大的安全威胁


你可以考虑一个工作,而不是使用URLNECODE,你可以使用HTMLEnCODE只对查询字符串值进行编码。

从我所记得的,ASP.NET不允许你默认地向服务器提交HTML。不过,我很确定web.config中对此有一个设置——您可以使用HTTP post方法而不是查询字符串在post正文中发送消息。实际上,我将post与AngularJS的$HTTP方法结合使用。消息作为参数添加,然后在提交后格式化并编码为查询字符串。