【问题标题】:MVC 5 - Url.Content("~/") throws "Cannot use a leading .. to exit above the top directory" exceptionMVC 5 - Url.Content("~/") 抛出“不能使用前导 .. 退出顶级目录”异常
【发布时间】: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


    【解决方案1】:

    这个问题对我来说只是开发环境的问题......

    从 VS2012 在 Visual Studio Development Server 中运行该站点会导致此错误,但一旦 Web 应用程序在 IIS 下运行,该问题就消失了。

    【讨论】:

      猜你喜欢
      • 2011-04-19
      • 1970-01-01
      • 2012-01-14
      • 2011-01-16
      • 1970-01-01
      • 1970-01-01
      • 2019-09-17
      • 2010-09-16
      相关资源
      最近更新 更多