2011-03-15 2 views
1

이것은 정말 이상한되어 내 ServicesController 클래스의 Login 방법을 포함하여 MVC 응용 프로그램 실행있어 :"username"매개 변수가 내가 제공 한 것 이상으로 다시 나타납니다! -

public ActionResult Login() { 
    var p = Request.Params; 
    var userName = p["username"]; 
    var password = p["password"]; 
    // etc... 
} 

이상한 것은입니다 I는 요청과 함께 서비스를 호출 할 때 :

/services/login?username=myusername&password=password 

나는 코드로 얻을 userName는 "anotherusername, MyUserName 에다이"는 사실을 알게 될 것입니다. 내가 사용하고있는 브라우저에 따라 "anotherusername"대신 다른 값을 얻습니다. 개발중인 다른 앱에서 인식하고 있습니다. 그래서 "username"은 매개 변수 이름으로 사용해서는 안되는 예약어일까요? 매개 변수로 안전하게 사용할 수없는 다른 예약어가 있습니까?

+0

페이지에 _POST_ 하시겠습니까? 동일한 ID를 가진 양식 요소가 있습니까? – Oded

+0

@Oded - 페이지가 없으며 xml을 반환하는 서비스입니다 –

답변

3

Request.ParamsRequest.QueryString, Request.Form, Request.ServerVariablesRequest.Cookies의 값을 결합한다. 나는 두 번째 값이 서버 변수이거나 쿠키라고 기대한다. 각 컬렉션에서 귀하의 요청을 확인하여 확인할 수 있습니다.

대신 Request.QueryString (GET 요청) 또는 Request.Form (POST 요청)을 확인해보십시오.

+0

네가 옳았다 : 다른 앱에서 쿠키에 문제가있는 매개 변수를 찾았습니다! 그게 정말 이상한데 ... 왜 내 요청이 그 쿠키에 대해 알고 싶다고 생각하니? –

+1

응용 프로그램이 같은 도메인에 있습니까? 개발 환경에서 localhost를 사용하면 다른 포트에 있더라도 사용중인 모든 응용 프로그램에서 쿠키를 얻을 수 있습니다. 지속 된 쿠키를 사용하거나 다른 포트에서 여러 응용 프로그램을 동시에 테스트하는 경우에는 주로 문제가됩니다. – detaylor

+0

Yip, 다른 응용 프로그램, 모두 localhost, 다른 포트. 오, 이런 것들에 경고 라벨을 붙여야 해! 그렇다면 해결 방법은 무엇입니까? 내가 작업하고있는 모든 앱마다 다른 매개 변수 이름을 사용하는 것 외에는 무엇이 있을까요? –

관련 문제