【发布时间】:2014-04-28 06:38:38
【问题描述】:
当使用 url 的根从页面调用 MVC UrlHelper.Content 函数时,我遇到了一个有趣的问题:
当从 mysite.com/some-content 调用时发生,但当从内容 2 深斜线(例如 mysite)调用时不会发生 .com/content/some-content
当以下代码行以任何 ~ 为前缀的 url 被调用时:
@Url.Content("~/")
抛出以下异常:
'Url.Content("~/")' 抛出类型异常 'System.Web.HttpException' base {System.Runtime.InteropServices.ExternalException}:{“不能使用前导..退出顶级目录。”} WebEventCode: 0
我正在使用Piranha CMS,它负责这些根 url 站点页面。但是,查看 UrlHelper 的对象类型,它似乎没有被 CMS 取代:
{Name = "UrlHelper" FullName = "System.Web.Mvc.UrlHelper"} [System.RuntimeType]: {Name = "UrlHelper" FullName = "System.Web.Mvc.UrlHelper"} 基础 {System.Reflection.MemberInfo}:{Name = "UrlHelper" FullName = "System.Web.Mvc.UrlHelper"} 程序集:{System.Web.Mvc,版本=5.1.0.0,文化=中性,PublicKeyToken=31bf3856ad364e35} AssemblyQualifiedName:“System.Web.Mvc.UrlHelper,System.Web.Mvc,版本=5.1.0.0,文化=中性,PublicKeyToken=31bf3856ad364e35” ...}
任何想法可能导致此问题?
来自 web.config,以防它突出显示任何版本问题:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.3.0.0" newVersion="1.3.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-5.1.0.0" newVersion="5.1.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
【问题讨论】:
标签: c# asp.net-mvc asp.net-mvc-5 piranha-cms