解決應用程序路徑我有一個非常基本的HTML形式被呈現在ServiceStack.RazorViewPage
:ServiceStack.Razor ViewPageBase.Href不是AppHarbor
<form action="@Href("~/subfolder/someservice")" method="POST">
<input...>
...
</form>
它從我的本地IIS虛擬目錄的應用程序中運行時正常工作。然而,一旦部署到AppHarbor,我得到這個錯誤:
The relative virtual path 'http:/myssrazorapp.apphb.com/subfolder/someservice' is not allowed here.
[ArgumentException: The relative virtual path 'http:/myssrazorapp.apphb.com/subfolder/someservice' is not allowed here.]
System.Web.VirtualPath.Create(String virtualPath, VirtualPathOptions options) +877
System.Web.VirtualPath.CreateNonRelative(String virtualPath) +9
System.Web.VirtualPathUtility.ToAbsolute(String virtualPath) +8
ServiceStack.Html.UrlHelper.Content(String url) +6
ServiceStack.Razor.ViewPageBase`1.Href(String url) +10
CompiledRazorTemplates.Dynamic.dbbfcbafad.Execute() +291
ServiceStack.Razor.Templating.TemplateService.ExecuteTemplate(T model, String name, String defaultTemplatePath, IHttpRequest httpReq, IHttpResponse httpRes) +149
ServiceStack.Razor.RazorFormat.ExecuteTemplate(T model, String name, String templatePath, IHttpRequest httpReq, IHttpResponse httpRes) +80
ServiceStack.Razor.RazorFormat.ProcessRazorPage(IHttpRequest httpReq, ViewPageRef razorPage, Object dto, IHttpResponse httpRes) +50
ServiceStack.Razor.RazorHandler.ProcessRequest(IHttpRequest httpReq, IHttpResponse httpRes, String operationName) +366
ServiceStack.WebHost.Endpoints.Support.EndpointHandlerBase.ProcessRequest(HttpContext context) +164
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +859
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +131
我已經通過源代碼(ViewPageBase.Href和UrlHelper.Content)看了看,他們做的是通過對VirtualPathUtility.ToAbsolute
將原始字符串。我無法解釋除了AppHarbor環境之外,會以什麼方式影響VirtualPathUtility的功能。
錯誤的怪事是http:/
前綴缺少一個正斜槓。不知道這是否對任何人提出任何提示?
謝謝,但這ServiceStack.Razor,不MVC剃刀。沒有控制器或操作,只是映射到請求/響應DTO對的服務端點。儘管你確實提醒我一個好點,但我不應該在視圖中硬編碼到該服務的路由,因爲它已經被定義爲請求DTO的一個屬性。我應該有一個從DTO中讀取它的幫助器方法 - 這實際上是計劃的一部分,但我還是很執行它。儘管如此,上面也應該可以工作(href路徑也可以是一個靜態文件)。 – Tyson