URL이 포함 된 IIS 7.5 POSTBACK에서 QueryString 매개 변수를 두 배로 늘립니다.
-
12-09-2019 - |
문제
Windows 7 RC에서 IIS 7.5를 사용하고 있습니다. IIS URL Rewrite 모듈을 사용하여 URL을 다시 작성합니다.
버튼을 클릭하여 포스트 백을 수행 할 때까지 모든 것이 잘 작동하는 것 같습니다. 그런 다음 QueryString 매개 변수를 다시 작성한 URL에 추가합니다.
브라우저에 표시된대로 URL을 다시 작성합니다.http : // localhost/en/product/1239/Gary+Fisher+Hkek+Mountain+자전거
URL을 다시 작성하지 않으면 URL은 다음과 같습니다.
http : //localhost/product.aspx? lang = en & id = 1239 & title = Gary+Fisher+Hkek+Mountain+Bike
버튼을 클릭하여 포스트 백을 수행하면 URL이 다음과 같습니다.
URL이 다시 작성되면 모든 쿼리 스트링 매개 변수가 두 배가됩니다. 따라서 현재 언어를 얻으려면 다음을 수행합니다.
Request.QueryString["lang"]
내가 돌아 오는 가치는 "en, en"입니다.
다른 사람이 그 문제가 있습니까?
업데이트 : web.config에서 규칙을 다시 작성하십시오
<rule name="RedirectProductPageUrls" stopProcessing="true">
<match url="^product\.aspx$" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_METHOD}" negate="true" pattern="^POST$" />
<add input="{QUERY_STRING}" pattern="^lang=([^=&]+)&id=([^=&]+)&title=([^=&]+)$" />
</conditions>
<action type="Redirect" url="{C:1}/products/{C:2}/{C:3}" appendQueryString="false" redirectType="Permanent" />
</rule>
<rule name="RewriteProductPageUrls" stopProcessing="true">
<match url="^([^/]+)/product/([^/]+)/([^/]+)/?$" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="product.aspx?lang={R:1}&id={R:2}&title={R:3}" />
</rule>
해결책
다시 쓰기 규칙의 조치 요소에 appendquerystring = "false"속성을 추가하십시오.
도움이 되었기를 바랍니다.
다른 팁
추가하여 문제를 해결할 수있었습니다
Form.Action = Request.RawUrl;
page_load 이벤트에. 나는 AppendQueryString = "True"를 남길 수 있었고 지금까지는 제대로 작동하고 있습니다.
이것은 IIS 재 작성 모듈의 보안 기능입니다.
나는 개인적으로 ISAPI를 재 작성하는 것이 훨씬 더 좋고 규칙을 작성하는 것이 더 간단하며 더 많은 기능이 있습니다.
또한 IIS를 다시 작성하는 모듈을 다시 작성하고 새로운 프로세스 및 새로운 프로세스를 재 작성하는 중간에서 높은 부하 (웹 사이트에 대한 100 개 이상의 연결)에서 발견되었습니다.