【问题标题】:Asp.net mvc3 UserControl Path error : Cannot use a leading .. to exit above the top directoryAsp.net mvc3 UserControl Path 错误:无法使用前导 .. 退出顶级目录
【发布时间】:2012-02-06 09:22:30
【问题描述】:

我有一个包含 2 个项目的解决方案。在第一个项目中,我实现了用户控件,我想在第二个项目中使用它们。我在DomaineName 发布第一个项目,在DomaineName/Directory 发布第二个项目

这是一个 ASP.net MVC3 解决方案,所以我编写了一个助手来添加像这个链接http://malvinly.com/2011/02/28/using-web-forms-user-controls-in-an-asp-net-mvc-project/这样的控件

 public static HtmlString RenderControl<T>(this HtmlHelper helper, string path, Action<T> action) where T:UserControl
 {
        Page page= new Page();

        T control = (T)page.LoadControl(path);
        page.Controls.Add(control);

        if (action != null)
        { action(control); }

        using( StringWriter sw= new StringWriter())
        {
            HttpContext.Current.Server.Execute(page,sw,false);
            return new HtmlString(sw.ToString());
        }
}

在第二个项目的母版页中,我使用了帮助器:

Html.RenderControl<BackOffice.Controls.widgetRecentComment>("../../Controls/widgetRecentComment.ascx")

但是出现了这个错误:

不能使用前导 .. 退出顶级目录

我不能使用~,因为我的用户控件在DomaineName而不是DomaineName/Directory

你能帮帮我吗??

【问题讨论】:

  • 为什么不简单地构建您的项目,以便您可以使用 ~/controls 它会让您的生活更轻松,并防止试图绕过安全功能(父路径)

标签: c# asp.net-mvc-3 user-controls path


【解决方案1】:

这是 IIS 中的一项设置,它不允许您通过在文件名中使用 .. 来访问应用程序根目录之外的文件。

如果您可以控制服务器上的 IIS,则可以更改此设置,否则您将无法使用其他应用程序中的控件。

【讨论】:

  • 我不知道在 IIS 中更改的条件。你能告诉我怎么改吗?女巫设置准确吗?
  • @soumayssa: 看了一点,没找到... 有一个ASP页面的设置,叫做“启用父路径”,但是我没有找到对应的ASP.NET 的设置。参考:advancedinstaller.com/user-guide/iis-aspnet.html
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-16
  • 1970-01-01
  • 2019-09-17
  • 1970-01-01
  • 2012-01-14
  • 2011-01-16
相关资源
最近更新 更多