Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. Web Development
  3. ASP.NET
  4. Error: The resource cannot be found.

Error: The resource cannot be found.

Scheduled Pinned Locked Moved ASP.NET
helpdatabasedesignsysadminquestion
14 Posts 3 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Member 8761667

    That's great 8761667 Thank you. The error has gone but for some reason the 'You have successfully registered' is still not personalised. The script that I added I basically got from a Microsoft tutorial.

    Z Offline
    Z Offline
    ZurdoDev
    wrote on last edited by
    #4

    You're passing the username through the querystring but then never using it, at least not in the data you showed.

    There are only 10 types of people in the world, those who understand binary and those who don't.

    M 1 Reply Last reply
    0
    • Z ZurdoDev

      You're passing the username through the querystring but then never using it, at least not in the data you showed.

      There are only 10 types of people in the world, those who understand binary and those who don't.

      M Offline
      M Offline
      Member 8761667
      wrote on last edited by
      #5

      How would I do that, Ryan? This is my first venture into asp.net.

      Z 1 Reply Last reply
      0
      • M Member 8761667

        How would I do that, Ryan? This is my first venture into asp.net.

        Z Offline
        Z Offline
        ZurdoDev
        wrote on last edited by
        #6

        I suggest getting a book or going through online tutorials. A simple method is to add a label and then in Page_Load take the value from Request.QueryString and put it into the label. But this is such basic stuff that I think you'll learn a lot more if you go through tutorials.

        There are only 10 types of people in the world, those who understand binary and those who don't.

        M 1 Reply Last reply
        0
        • Z ZurdoDev

          I suggest getting a book or going through online tutorials. A simple method is to add a label and then in Page_Load take the value from Request.QueryString and put it into the label. But this is such basic stuff that I think you'll learn a lot more if you go through tutorials.

          There are only 10 types of people in the world, those who understand binary and those who don't.

          M Offline
          M Offline
          Member 8761667
          wrote on last edited by
          #7

          Yes, OK, I will do. Thanks

          Richard DeemingR 1 Reply Last reply
          0
          • M Member 8761667

            Yes, OK, I will do. Thanks

            Richard DeemingR Offline
            Richard DeemingR Offline
            Richard Deeming
            wrote on last edited by
            #8

            A word of warning: Don't do what Ryan said. (Or at least, not exactly what he said!) When you take a value from the request and want to re-display it, you need to make sure it's properly encoded. In this case, since you're display it as text within the HTML of the page, you need to use the HttpUtility.HtmlEncode method[^] to encode the string before showing it in a label. The reason you need to encode it before displaying it is to prevent a cross-site scripting (XSS)[^] attack. Since the query-string could be modified by the user, they could pass in any HTML or javascript. If your code blindly copies that to the response, they can execute that script within your page. Since it's just a link, they could send that out to anyone they think might use your site, and anyone who clicked on the link would suddenly find that their authentication cookies have been stolen, or that your site has installed malware on their device. You should never trust any input that comes from the user, whether it's in the query-string, part of a POST request, or even the HTTP headers. Always assume that all users are trying to hack into your site, and use the appropriate defences. :)


            "These people looked deep within my soul and assigned me a number based on the order in which I joined." - Homer

            "These people looked deep within my soul and assigned me a number based on the order in which I joined" - Homer

            M Z 2 Replies Last reply
            0
            • Richard DeemingR Richard Deeming

              A word of warning: Don't do what Ryan said. (Or at least, not exactly what he said!) When you take a value from the request and want to re-display it, you need to make sure it's properly encoded. In this case, since you're display it as text within the HTML of the page, you need to use the HttpUtility.HtmlEncode method[^] to encode the string before showing it in a label. The reason you need to encode it before displaying it is to prevent a cross-site scripting (XSS)[^] attack. Since the query-string could be modified by the user, they could pass in any HTML or javascript. If your code blindly copies that to the response, they can execute that script within your page. Since it's just a link, they could send that out to anyone they think might use your site, and anyone who clicked on the link would suddenly find that their authentication cookies have been stolen, or that your site has installed malware on their device. You should never trust any input that comes from the user, whether it's in the query-string, part of a POST request, or even the HTTP headers. Always assume that all users are trying to hack into your site, and use the appropriate defences. :)


              "These people looked deep within my soul and assigned me a number based on the order in which I joined." - Homer

              M Offline
              M Offline
              Member 8761667
              wrote on last edited by
              #9

              Hello Richard Thanks for your post. So in addition to this if I can get it to work:

              Public Class success
              Inherits System.Web.UI.Page

              Protected Sub Page\_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
              
                  If Request("Name") IsNot Nothing Then
                       Name.Text = String.Format("{0}, ", Request("Name"))
                  End If
              
              End Sub
              

              End Class

              I would also need the basis of something like this (which looks complicated!):

              Imports System
              Imports System.Web
              Imports System.IO

              Class MyNewClass
              Public Shared Sub Main()
              Dim myString As String
              Console.WriteLine("Enter a string having '&' or '""' in it: ")
              myString = Console.ReadLine()
              Dim myEncodedString As String
              ' Encode the string.
              myEncodedString = HttpUtility.HtmlEncode(myString)
              Console.WriteLine("HTML Encoded string is " + myEncodedString)
              Dim myWriter As New StringWriter()
              ' Decode the encoded string.
              HttpUtility.HtmlDecode(myEncodedString, myWriter)
              Console.Write("Decoded string of the above encoded string is " + myWriter.ToString())
              End Sub 'Main
              End Class 'MyNewClass

              As an aside, my 'you have successfully registered' page tells me after I complete the form myself: 'System.Web.UI.WebControls.TextBox, You have successfully registered'. I can see 'System.Web.UI.WebControls.TextBox' if I hover my mouse over the word 'username' in my Register.aspx.vb file, but I don't know what the source of the error is. Thanks again, Richard.

              Richard DeemingR 1 Reply Last reply
              0
              • Richard DeemingR Richard Deeming

                A word of warning: Don't do what Ryan said. (Or at least, not exactly what he said!) When you take a value from the request and want to re-display it, you need to make sure it's properly encoded. In this case, since you're display it as text within the HTML of the page, you need to use the HttpUtility.HtmlEncode method[^] to encode the string before showing it in a label. The reason you need to encode it before displaying it is to prevent a cross-site scripting (XSS)[^] attack. Since the query-string could be modified by the user, they could pass in any HTML or javascript. If your code blindly copies that to the response, they can execute that script within your page. Since it's just a link, they could send that out to anyone they think might use your site, and anyone who clicked on the link would suddenly find that their authentication cookies have been stolen, or that your site has installed malware on their device. You should never trust any input that comes from the user, whether it's in the query-string, part of a POST request, or even the HTTP headers. Always assume that all users are trying to hack into your site, and use the appropriate defences. :)


                "These people looked deep within my soul and assigned me a number based on the order in which I joined." - Homer

                Z Offline
                Z Offline
                ZurdoDev
                wrote on last edited by
                #10

                Richard Deeming wrote:

                it is to prevent a cross-site scripting (XSS)[^] attack.

                Yes, I intentionally left that out as to not overwhelm, but valid point. Note, most browsers do a good job preventing that anyway.

                There are only 10 types of people in the world, those who understand binary and those who don't.

                1 Reply Last reply
                0
                • M Member 8761667

                  Hello Richard Thanks for your post. So in addition to this if I can get it to work:

                  Public Class success
                  Inherits System.Web.UI.Page

                  Protected Sub Page\_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
                  
                      If Request("Name") IsNot Nothing Then
                           Name.Text = String.Format("{0}, ", Request("Name"))
                      End If
                  
                  End Sub
                  

                  End Class

                  I would also need the basis of something like this (which looks complicated!):

                  Imports System
                  Imports System.Web
                  Imports System.IO

                  Class MyNewClass
                  Public Shared Sub Main()
                  Dim myString As String
                  Console.WriteLine("Enter a string having '&' or '""' in it: ")
                  myString = Console.ReadLine()
                  Dim myEncodedString As String
                  ' Encode the string.
                  myEncodedString = HttpUtility.HtmlEncode(myString)
                  Console.WriteLine("HTML Encoded string is " + myEncodedString)
                  Dim myWriter As New StringWriter()
                  ' Decode the encoded string.
                  HttpUtility.HtmlDecode(myEncodedString, myWriter)
                  Console.Write("Decoded string of the above encoded string is " + myWriter.ToString())
                  End Sub 'Main
                  End Class 'MyNewClass

                  As an aside, my 'you have successfully registered' page tells me after I complete the form myself: 'System.Web.UI.WebControls.TextBox, You have successfully registered'. I can see 'System.Web.UI.WebControls.TextBox' if I hover my mouse over the word 'username' in my Register.aspx.vb file, but I don't know what the source of the error is. Thanks again, Richard.

                  Richard DeemingR Offline
                  Richard DeemingR Offline
                  Richard Deeming
                  wrote on last edited by
                  #11

                  You don't really need the console application, unless you want to play with the methods. All you really need is:

                  Public Class success
                  Inherits System.Web.UI.Page

                  Protected Sub Page\_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
                      
                      ' Store this in a local variable, so you're not repeatedly looking up the same item.
                      ' Also, use Request.QueryString("Name") instead of Request("Name"), as you already know it's in the query string.
                      Dim theName As String = Request.QueryString("Name")
                      
                      ' The value might be Nothing, or it might be an empty string:
                      If Not String.IsNullOrEmpty(theName) Then
                           
                           ' Encode the value to display as text within an HTML context:
                           Name.Text = HttpUtility.HtmlEncode(theName)
                      End If
                  
                  End Sub
                  

                  End Class

                  As for the page displaying your name as System.Web.UI.WebControls.TextBox, it sounds like you're doing something like:

                  Response.Redirect(String.Format("success.aspx?name={0}", UserNameTextBox))

                  You need to pass the value of the TextBox, which is in the .Text property. You should also make sure that you properly encode the value - this time, for a URL:

                  Dim theName As String = UserNameTextBox.Text
                  Dim encodedName = HttpUtility.UrlEncode(theName)
                  Response.Redirect(String.Format("success.aspx?name={0}", encodedName))


                  "These people looked deep within my soul and assigned me a number based on the order in which I joined." - Homer

                  "These people looked deep within my soul and assigned me a number based on the order in which I joined" - Homer

                  M 1 Reply Last reply
                  0
                  • Richard DeemingR Richard Deeming

                    You don't really need the console application, unless you want to play with the methods. All you really need is:

                    Public Class success
                    Inherits System.Web.UI.Page

                    Protected Sub Page\_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
                        
                        ' Store this in a local variable, so you're not repeatedly looking up the same item.
                        ' Also, use Request.QueryString("Name") instead of Request("Name"), as you already know it's in the query string.
                        Dim theName As String = Request.QueryString("Name")
                        
                        ' The value might be Nothing, or it might be an empty string:
                        If Not String.IsNullOrEmpty(theName) Then
                             
                             ' Encode the value to display as text within an HTML context:
                             Name.Text = HttpUtility.HtmlEncode(theName)
                        End If
                    
                    End Sub
                    

                    End Class

                    As for the page displaying your name as System.Web.UI.WebControls.TextBox, it sounds like you're doing something like:

                    Response.Redirect(String.Format("success.aspx?name={0}", UserNameTextBox))

                    You need to pass the value of the TextBox, which is in the .Text property. You should also make sure that you properly encode the value - this time, for a URL:

                    Dim theName As String = UserNameTextBox.Text
                    Dim encodedName = HttpUtility.UrlEncode(theName)
                    Response.Redirect(String.Format("success.aspx?name={0}", encodedName))


                    "These people looked deep within my soul and assigned me a number based on the order in which I joined." - Homer

                    M Offline
                    M Offline
                    Member 8761667
                    wrote on last edited by
                    #12

                    Thanks for that, Richard. This finally worked: register.aspx.vb

                    Dim target = String.Format("~/Success.aspx?Name={0}", username.Text)
                    ' Perform your Redirect '
                    Response.Redirect(target, True)

                    success.aspx.vb

                    Public Class success
                    Inherits System.Web.UI.Page

                    Protected Sub Page\_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
                    
                        If Request("Name") IsNot Nothing Then
                            ' It exists, so set your label (and a trailing comma) to display your name '
                            Name.Text = String.Format("{0}, ", Request("Name"))
                        End If
                    
                    End Sub
                    

                    End Class

                    Thanks for your help and for giving me an idea of what to look for.

                    Richard DeemingR 1 Reply Last reply
                    0
                    • M Member 8761667

                      Thanks for that, Richard. This finally worked: register.aspx.vb

                      Dim target = String.Format("~/Success.aspx?Name={0}", username.Text)
                      ' Perform your Redirect '
                      Response.Redirect(target, True)

                      success.aspx.vb

                      Public Class success
                      Inherits System.Web.UI.Page

                      Protected Sub Page\_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
                      
                          If Request("Name") IsNot Nothing Then
                              ' It exists, so set your label (and a trailing comma) to display your name '
                              Name.Text = String.Format("{0}, ", Request("Name"))
                          End If
                      
                      End Sub
                      

                      End Class

                      Thanks for your help and for giving me an idea of what to look for.

                      Richard DeemingR Offline
                      Richard DeemingR Offline
                      Richard Deeming
                      wrote on last edited by
                      #13

                      That looks very much like the original code you posted. You're missing all of the required encoding. For example, try entering a username of <script>alert("Test")</script> - you'll either get a message box pop up when the success page loads, or your browser will prevent access to the page with a warning about cross-site scripting. You need to encode the value according to the context: register.aspx.vb:

                      Dim name As String = HttpUtility.UrlEncode(username.Text)
                      Dim target As String = String.Format("~/Success.aspx?Name={0}", name)
                      Response.Redirect(target, True)

                      success.aspx.vb:

                      Public Class success
                      Inherits System.Web.UI.Page

                      Protected Sub Page\_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
                      
                          Dim theName As String = Request.QueryString("Name")
                          If Not String.IsNullOrEmpty(theName) Then
                              Dim encodedName As String = HttpUtility.HtmlEncode(theName)
                              Name.Text = String.Format("{0}, ", encodedName)
                          End If
                      
                      End Sub
                      

                      End Class


                      "These people looked deep within my soul and assigned me a number based on the order in which I joined." - Homer

                      "These people looked deep within my soul and assigned me a number based on the order in which I joined" - Homer

                      M 1 Reply Last reply
                      0
                      • Richard DeemingR Richard Deeming

                        That looks very much like the original code you posted. You're missing all of the required encoding. For example, try entering a username of <script>alert("Test")</script> - you'll either get a message box pop up when the success page loads, or your browser will prevent access to the page with a warning about cross-site scripting. You need to encode the value according to the context: register.aspx.vb:

                        Dim name As String = HttpUtility.UrlEncode(username.Text)
                        Dim target As String = String.Format("~/Success.aspx?Name={0}", name)
                        Response.Redirect(target, True)

                        success.aspx.vb:

                        Public Class success
                        Inherits System.Web.UI.Page

                        Protected Sub Page\_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
                        
                            Dim theName As String = Request.QueryString("Name")
                            If Not String.IsNullOrEmpty(theName) Then
                                Dim encodedName As String = HttpUtility.HtmlEncode(theName)
                                Name.Text = String.Format("{0}, ", encodedName)
                            End If
                        
                        End Sub
                        

                        End Class


                        "These people looked deep within my soul and assigned me a number based on the order in which I joined." - Homer

                        M Offline
                        M Offline
                        Member 8761667
                        wrote on last edited by
                        #14

                        Hello Richard Thanks for that. I actually have in aspx.vb:

                        Dim target = String.Format("~/Success.aspx?Name={0}", username.Text)
                        ' Perform your Redirect '
                        Response.Redirect(target, True)

                        and in success.aspx.vb:

                        Public Class success
                        Inherits System.Web.UI.Page

                        Protected Sub Page\_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
                        
                            If Request("Name") IsNot Nothing Then
                                ' It exists, so set your label (and a trailing comma) to display your name '
                                Name.Text = String.Format("{0}, ", Request("Name"))
                            End If
                        
                        End Sub
                        

                        End Class

                        That seems to work, but I don't have HttpUtility.UrlEncode or HttpUtility.HtmlEncode. Thanks again for your time.

                        1 Reply Last reply
                        0
                        Reply
                        • Reply as topic
                        Log in to reply
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes


                        • Login

                        • Don't have an account? Register

                        • Login or register to search.
                        • First post
                          Last post
                        0
                        • Categories
                        • Recent
                        • Tags
                        • Popular
                        • World
                        • Users
                        • Groups