2014-11-24 35 views
2

我在我的字符串中有#url編碼組件不在字符串服務器端

並且我通過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"); 
} 

});

我的密碼字符串是:[email protected]#

我的C#方法結構:

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

Wheni得到密碼參數在C#中,它如下:

[email protected] 

當我做的

警報
encodeURIComponent(Password) 

它:

pass%40%23 

爲什麼我沒有得到同樣的結果(合格%40%23)在我的C#方法的密碼參數???

Plaese幫助我。

回答

2

如果您在IIS + ASP.Net/WCF上託管您的WCF數據服務,那麼您可能會發現某些字符會導致服務器在包含在實體鍵中時拋出。結果是400錯誤請求或404未找到。在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

+1

您上一個鏈接幫了我。謝謝。 :) – 2014-11-24 08:43:20