【问题标题】:url encode component not getting in string server sideurl 编码组件未进入字符串服务器端
【发布时间】:2014-11-24 06:11:58
【问题描述】:

我的字符串中有#

我正在通过 ajax 将该字符串发送到服务器端的 c# 方法。

我发送如下:

$.ajax({
type: "POST",
url: "http://localhost:5889/MobileEcomm/Service1.svc/validateLogin/"+EmailID+"/"+encodeURIComponent(Password),
crossDomain: true,

success: function (data) {

    alert(JSON.stringify(data));
     alert("Login Sucessfull!!!");   
        window.location = "viewOrders.html";

    // do something with server response data
},
error: function (err) {
    // handle your error logic here
    alert("Error");
}

});

我的密码字符串是:pass@#

我的c#方法结构:

public string validateLogin(string Email, string Password)
        {
              return Password;
        }

在c#中获取密码参数时,如下:

pass@

当我提醒

encodeURIComponent(Password)

它的:

pass%40%23

为什么我的 c# 方法中的密码参数没有得到相同的结果(pass%40%23)???

请帮帮我。

【问题讨论】:

    标签: javascript c# jquery asp.net .net


    【解决方案1】:

    如果您将 WCF 数据服务托管在 IIS+ASP.Net/WCF 之上,那么您可能会发现某些字符包含在实体键中时会导致服务器抛出异常。结果是 400 Bad Request 或 404 Not Found。在 VS 2010 RC 中,您可以潜在地配置服务器以支持这些字符,但首先,让我们看看哪些字符被视为“特殊”:

    %,&,*,:,,+,#, /, ?,\

    如果在实体的字符串键中使用了上述任何字符,则无论是否对 Uri 进行转义,查询该实体都会导致错误。

    而且您在 URL 中使用了 #,这就是它没有提供正确结果的原因。

    在 MSDN 博客上查看此链接以获取解决方案

    http://blogs.msdn.com/b/peter_qian/archive/2010/05/25/using-wcf-data-service-with-restricted-characrters-as-keys.aspx

    您可能还想查看此链接,它将回答您问题的第二部分,为什么您将 %40%23 作为值。

    https://social.msdn.microsoft.com/Forums/vstudio/en-US/d03c8331-1e98-4d5d-82a7-390942a93012/special-characters-in-wcf-rest-atom-feed?forum=wcf

    【讨论】:

    • 您的最后一个链接帮助了我。谢谢你。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-07
    • 2019-11-11
    • 1970-01-01
    • 1970-01-01
    • 2018-07-02
    • 2017-09-29
    • 1970-01-01
    相关资源
    最近更新 更多