2012-09-07 2 views
2

적절한 이미지를 전달하기 위해 일부 쿼리 문자열 값이 필요한 ashx 파일이 있습니다.컨텍스트 내에서 쿼리 문자열을 디코딩합니다. 요청

문제는 일부 검색 엔진 urlencode 다음 htmlencode 캐시에있는 URL 또는 색인을 생성 할 때입니다.

그래서 대신

/preview.ashx?file=abcd.jpg&root=small 

를 가져 오는 예를 들어 나는이 기본적으로 context.Request.QueryString["root"]은 그래서

내가 두 번째 추측 어떤 변수 루트가 없다는 것을 생각 오프가 발생

/preview.ashx?file=abcd.jpg&root=small 

를 얻을 수 쿼리 문자열의 키는 amp; 루트 즉 부분 & 기호 뒤에.

내가 혼란스러워하지 않도록 서버 측에서 쿼리 문자열을 자동으로 html 및 urldecode하는 방법이 있다면 궁금합니다.

+0

'C'로 질문에 태그를 붙였습니다 - 'C#'을 의미합니까? – Oded

+0

그럴리 :'context.Request.QueryString [ "루트"]'(_string_'루트') – Oded

+0

예 .. 나는 C#을 의미 ... context.Request.QueryString [ "루트"] 작은 반환해야하지만 루트와 같은 키가 없기 때문에 null을 반환합니다 .... 키 앰프가 있습니다. 루트 – robert

답변

5

또는 HttpUtility.UrlDecode 번을 두 번 이상 호출해도 해가 없습니다.

string queryString = "/preview.ashx?file=abcd.jpg&root=small"; 
var parsedString = HttpUtility.HtmlDecode(queryString); 
var root = HttpUtility.ParseQueryString(parsedString)["root"]; 
+0

고마워요 ... 실제로 그렇게하는 것을 피하려고했습니다 ...하지만 컨텍스트를 설정할 방법이 없기 때문에 추측합니다. 요청 .QueryString을 해독 한 후에도 작동합니다. 궁금 해서요. 서버 쪽을 해독 할 수있는 방법이 있는지 궁금 해서요. 프로그램을 빠져 나갈 수 있겠습니까? – robert

+0

원래 URL에 인코딩 된 + 부호가 있고 두 번 디코드를 호출하면 실제로 문제가되지 않습니까? 처음에는 +로 디코드되지만 두 번째에는 +가 공백으로 디코딩됩니다. 내가 놓친 게 아니라면? – muttley91

+0

@rar 예'HttpUtility.UrlEncode'와'HttpUtility.UrlDecode'를 사용하여 예제를 게시하면 구체적인 샘플 코드를 사용할 수 있습니다. –

4
URL 인코딩으로

과는 다음과 같은 방법을 사용할 수 있습니다 디코딩 : 나는 쿼리 문자열이 이중으로 인코딩 된 과거의 인스턴스를 본 적이

string encoded = System.Web.HttpUtility.UrlEncode(url); 

string decoded = System.Web.HttpUtility.UrlDecode(url); 

. 어떤 경우에는 이중으로 해독해야합니다. 이것은 귀하의 문제 일 수 있습니다 ...

관련 문제