Я только что перестроил это, чтобы вообще избежать вопросительного знака (а также исключения)
сценарий:
Я пытаюсь перейти к http://www.example.com/message/compose
Но допустим, у меня нет разрешения на просмотр этой страницы.
Public Class MessageController
Inherits System.Web.Mvc.Controller
Function Compose() As ActionResult
...
If ... Then
Return RedirectToAction("SignIn", "Account", New With {.ReturnUrl = Request.Path})
End If
...
Return View()
End Function
...
End Class
Я перенаправлен на мою страницу входа. Мой маршрут выглядит так:
routes.MapRoute( _
"SignIn", _
"signin/{*ReturnUrl}", _
New With {.controller = "Account", _
.action = "SignIn", _
.ReturnUrl = ""} _
)
Так что это по адресу http://www.example.com/signin/message/compose
Но я использую HTTP, а не HTTPS. Мое действие требует HTTPS.
Public Class AccountController
Inherits System.Web.Mvc.Controller
<RemoteRequireHttps()> _
Function SignIn(ByVal ReturnUrl As String) As ActionResult
...
End Function
...
End Class
Я перенаправлен на https://www.example.com/signin/message/compose
Без знака вопроса. Нет проблем.