Po umieszczeniu w formularzu znaków HTML, takich jak <br />
, program ASP.NET generuje wewnętrzny wyjątek 500 zgodnie z opisem here.Kiedy przesyłam znaki HTML w formularzu, dlaczego program ASP.NET generuje błąd serwera wewnętrznego (500)?
A potentially dangerous Request.Form value was detected from the client (Name="<br />").
Ok, więc to mnie chronić od niekodowanej znaków, które mogłyby zostać wykorzystane do złych powodów.
Problem polega na tym, że odpowiedź na to pytanie nie ma miejsca w moich długich poszukiwaniach, to co z tym zrobić:. To znaczy. moja aplikacja nie powinna po prostu wyrzucać ogólny wewnętrzny błąd serwera, gdy użytkownik wprowadza złe znaki (co jeśli narysują strzałkę, taką jak < -).
Co jest lepsze, to po prostu wrócić do strony z błędem ModelState
z napisem "Proszę nie używać znaków HTML" lub czymś znaczącym.
Ale jak to osiągnąć? Błąd jest zgłaszany, zanim dojdzie do mojego kodu. Ponadto nie chcę po prostu wyłączać go poprzez validateRequest="false"
, a następnie trzeba sprawdzić poprawność każdego formularza w mojej aplikacji dla znaków HTML i zwrócić błąd.
Czy istnieje sposób na pozostawienie tego rodzaju sprawdzania poprawności włączonego, ale po prostu obsługuje go inaczej?
Kod dla wyjaśnienia:
Model
Public Class SomeModel
Public Property SomeField As String
End Class
Controller
<HttpPost>
Function SomeController(ByVal model As SomeModel)
' model.SomeField contains some HTML characters :O
' but it doesn't matter, since an internal error has occured :(
End Function
Zaktualizowałem mój problem, aby uwzględnić kod, w kontekście. –