문제

숫자 쿼리 문자열 값을 기대하는 페이지가 있습니다. 예를 들어:

Details.aspx?rgn=1234

이 페이지에는 an이 있습니다 <asp:repeater> 이 데이터는 데이터입니다 <asp:objectdatasource>. 데이터 소스는 다음과 같습니다.

<asp:ObjectDataSource ID="ObjectRegion" runat="server" SelectMethod="GetRegions" TypeName="Region">
  <SelectParameters>
    <asp:QueryStringParameter Name="RegionID" QueryStringField="rgn" Type="Int32" DefaultValue='0' />
  </SelectParameters>
</asp:ObjectDataSource>

이것은 공개 페이지이기 때문에 때로는 해커 / 검색 엔진 / 호기심 많은 사람들에 의해 수치가 아닌 가치가 전달됩니다. 내 page_load에서 이것을 확인합니다. 이 같은:

protected void Page_Load(object sender, EventArgs e)
{
    int RegionID;
    string strRegion = Request.QueryString["rgn"];
    if(string.IsNullOrEmpty(strRegion) || !int.TryParse(strRegion, out RegionID))
    {
        // setup permanent redirect
        return;
    }
}

문제는 내 리피터가 여전히 데이터베인딩을 수행하여 [FormatException: Input string was not in a correct format.]... 내가 예방하고 싶은 것입니다. 이 문제를 해결하는 간단한 방법에 대한 아이디어가 있습니까?

도움이 되었습니까?

해결책

나는 내 자신의 질문에 대답했다. 나는 추가하는 것을 잊었다 Response.End() 영구 리디렉션에서 :

Response.Status = "301 Moved Permanently";
Response.AddHeader("Location",URL);
Response.End();
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top