2015-12-08 150 views
1

我想在ActionResult上獲得加密查詢字符串,但參數始終爲空。Asp.Net MVC加密查詢字符串

我已經實現了一個電子郵件地址和加密的一些信息是這樣的:

string key = "r0b1nr0y"; 
var queryString = EncryptDecryptQueryString.Encrypt(String.Format("testId={0}&otherInfo={1}", Id, otherInfo), key); 

這是導致此URL參數:

?fpZG2mFDOZbuuBFccKLeu9Rzbn/I05i577IaaMSt0uztuHmWdeVIOQ== 

和URL是這樣的:

www.test.com/MyController/MyAction?fpZG2mFDOZbuuBFccKLeu9Rzbn/I05i577IaaMSt0uztuHmWdeVIOQ== 

現在,在控制器端,ActionResult被假設爲rec放入一個字符串。

運行程序,當我嘗試測試生成的url時,代碼達到MyAction,但字符串參數始終爲空。

public ActionResult MyAction(string queryString) 
{ 
    ... Do Stuff here...   
} 

我試圖創建一個特定的路線一樣好(like this example),但沒有奏效。

routes.MapRoute(
      "RouteTest", 
      "MyController/MyAction/{queryString}", 
      new { controller = "MyController", action = "MyAction", queryString = "" } 
     ); 

我可以把整個URL與Request.RawUrl,但我真的不明白,爲什麼加密的字符串參數爲null(或空)。

我是否錯過了某個地方的某個位置,或者是否存在空參數值的解釋?

回答

1

首先是Base64編碼字符串,因爲「/」和「=」網址中的特殊含義。

二:沒​​有路由您的網址應該是: www.test.com/MyController/MyAction?queryString=[UrlEncodedBase64] 隨着查詢字符串參數,將符合您的行爲的參數名稱。

+0

我有這個想法,這個解決方法對我有用。 – Maturano

2

它爲null,因爲你的方法期待您的網址來結束:

?queryString=xxxxxxxx 

我理解你的做法,但你要麼必須所有的參數單獨進行加密,使用我展示的方法上面,或者編寫您自己的模型聯編程序,該方法可以解釋您的代碼要使用的URL的內容。

型號粘合劑:https://msdn.microsoft.com/en-us/library/dd410405(v=vs.100).aspx所有你需要來urlencode的

+0

感謝您的回覆。是的,我忘了在編碼的queryString之前包含「queryString」, – Maturano