Frage

Ich habe eine Seite, die einen numerischen Query-String-Wert erwartet. Zum Beispiel:

Details.aspx?rgn=1234

Auf dieser Seite ist ein <asp:repeater>, die zu einem <asp:objectdatasource> datengebundene wird. Die Datenquelle sieht ungefähr wie folgt aus:

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

Da dies eine öffentliche Seite, manchmal bekommen passierte ich einen nicht-numerischen Wert von Hackern / Suchmaschinen / neugierig Leute. Ich bestätigen dies in meinem Page_Load. So etwas wie folgt aus:

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;
    }
}

Das Problem ist, dass mein Repeater tut es immer noch seine Datenbindung ohnehin die eine [FormatException: Input string was not in a correct format.] verursacht ... das ist etwas, das ich verhindern will. Irgendwelche Ideen eines einfachen Weg, dies zu umgehen?

War es hilfreich?

Lösung

Ich antwortete meine eigene Frage. Ich habe vergessen, eine Response.End() auf der dauerhaften Umleitung hinzuzufügen:

Response.Status = "301 Moved Permanently";
Response.AddHeader("Location",URL);
Response.End();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top