어떻게 보존하는 쿼리문자열에 의미를 변환하는 경우 MFC 할 수 있습 기반으로 웹 서버 ASP.Net?

StackOverflow https://stackoverflow.com/questions/1442302

  •  22-07-2019
  •  | 
  •  

문제

에서 기존 MFC 할 수 있습 기반으로 웹 서버,우리는 명령 구문 분석 지도 뭔가 다음과 같다:

BEGIN_PARSE_MAP(MyHttpServer, CHttpServer)
    ON_PARSE_COMMAND(MyPage, MyHttpServer, ITS_I4 ITS_I4 ITS_I4 ITS_I4 ITS_PSTR ITS_PSTR ITS_PSTR ITS_I4)
    ON_PARSE_COMMAND_PARAMS("intParam1=11 intParam2=12 intParam3=13 intParam4=14 strParam5=s5 strParam6=s6 strParam7=s7 intParam8=18")
END_PARSE_MAP(MyHttpServer)

이렇게 정의 페이지에 접근 가능 http://host/path/dllname.dll?MyPage 을 허용하는 최대 8 개의 매개변수 이름 intParam1, intParam2, intParam3, intParam4, strParam5, strParam6, strParam7, 고 intParam8.

호출 응용 프로그램 호출할 수 있으로 페이지에서 매개 변수라는 이름 패션이 같은:

http://host/path/dllname.dll?MyPage?intParam4=32&strParam7=somestring

그러나 방법 MFC 명령을 분석하지도 작업,그들은 또한 그것으로 익명으로 매개 변수들은 제공하는 순서에 의해 정의된 지도

http://host/path/dllname.dll?MyPage?21&22&23&24&string5&string6&string7&28

나는 교체된 이 코드는 ASP.Net 페이지는,그러나 우리는 기존의 부르는 응용 프로그램은 변경되지 않는다는 것을 호출하는 페이지를 사용하여 두 가지 스타일의 매개 변수가 전달라고 이름.

나는 쉽게 관리할 수 있습니다 필요한 URL 재작성하도록 허용 ASP.Net 페이지에 대응하는 URL 을 상기 주어지는 것과 같이,대체 path/dllname.dll?MyPage 부분으로 경로.페이지나.ashx 처리기입니다.

문제를 제공하려고 할 때 처리 매개 변수 이름에 해당하는 패션전 MFC 매개 변수 parser.요청을 합니다.쿼리 문자열 모든 이름이 없는 매개변수로 지명되었으로 nullRequest.QueryString[null] 반 쉼표로 구분한 목록의 값이 있습니다.이것은 아주 가까이에 실행할 수 있지만,하나의 매개 변수는 실제로 쉼표를 포함이 인코딩을 떨어지기 때문에 여분의 쉼표하지 않은 탈출 그리고 분할 문자열에는 쉼표로 끝날 것이다 너무 많은 매개 변수입니다.

클래식 ASP,믿 Request.QueryString(...) 반환된 컬렉션의 모든 매개 변수는 동일하게 지정됩니다.이 없는 것 같에 해당하는 것에 ASP.Net 내가 찾을 수 있습니다.

보조 문제 MFC 명령 구문 분석 지도 꽤 복잡한 논리 처리에 대한의 혼합물 및 라는 이름 없는 매개 변수입니다.하지만 발신자의 페이지에 질문이 되지 않을 섞는 그들의 사용에서 이 방법으로,내가 관심에서 아마도 중복 논리에 대한 완벽을 기하기 위해.할 수 있는 사람을 확인하는 MFC 의 행동이 본질적으로 다음과 같은?

  • 모든 과정에서 매개 변수 URL 왼쪽에서 오른쪽으로,사용 & 으로 구분 기호입니다.
    • 는 경우 이름(동일한 기호)를 적용 가치를 매개 변수는 해당 이름과,관계없이 그것의 위치입니다.는 경우에는 매개변수에 이미 지정한 값 오류가 있습니다.
    • 는 경우 이름,적용 가치를 매개 변수에서의 n 번째에 위치 명령 구문 분석,지도 n 의 수는 이미 처리된 이름 없는 매개변수 1.는 경우에는 매개변수가 이 값을 할당,오류가 있습니다.
  • 적용되는 기본값에서 명령 구문 분석을 지도 모든 매개변수가 할당되지 않 위
  • 어떤 경우에서 매개 변수 명령 구문 분석 지도 되지 않은 값을 할당,오류가 있습니다.

하나 더 많은 흥미로운 노트,그것은 나타납니다 Request.QueryString.ToString() 이 거의 재구성하여 원래의 매개변수에 URL 을하지만,그것은 항상 매개 변수를 동일한 이름이 함께 포함하여,이름이 없는 매개변수에 대해 염려가 여기에.

도움이 되었습니까?

해결책 2

내가 찾는 Request.QueryStringGetValues() 방법입니다.이 문자열의 배열을 반환합니다며 문제를 해결하의 쉼표되고에 포함된 하나의 값이 있습니다.그것은 것도 쉽게 사용하기 보다는 분할하는 결과 Request.QueryString[null].

나는 아직 작업의 비트를 사용하여 이를 구현하 MFC 도의 URL 이 변수는 모두 이름과 이름이 매개 변수입니다.

다른 팁

가 확실하지 않는 경우에 당신의 문제를 해결,하지만 당신을 시도할 수 있었을 사용하여 요청을 합니다.Pathinfo 에.이렇게 하면 모든 것을 입력한 후,페이지할 수 있는 다음 분석을 사용하여 수동으로 같은 것 regex.

예를 들어,당신은 URL:

http://host/path/dllname.dll?MyPage?21&22&23&24&string5&string6&string7&28

요청을 합니다.Pathinfo 에 속성을 반환:

?MyPage?21&22&23&24&string5&string6&string7&28

가공으로 이것을 설정할 수 있는 값의 작품으로도 문제가 있으로 당신이 있어 모두 이름 및 un 이름이 지정된 매개변수,그러나 이것으로 달성해야한 정규 표현식을 사용하여 및 또는 분할 문자열.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top