如何在使用Server.Transfer在iframe中加载Web表单页面时使用Autofac注入属性?

时间:2017-08-19 04:01:28

标签: c# webforms autofac

编辑: 在Request.Redirect()检索页面时工作,当使用Server.Transfer()导航iframe时出现问题。我希望不要只是将应用程序中对Server.Transfer()的每个引用临时更改为Response.Redirect(),因为我不知道它们是真正可以互换的

我正在使用遗留的Web表单应用程序,其中包含许多全局变量,上帝类等,我一直在努力改进的第一件事是将一些方法分解为特定的类/接口并添加依赖注入除此之外。这个应用程序主要通过加载Main.aspx页面来工作,该页面包含一个加载后续页面的iframe。我发现在iframe中加载页面时不会发生注入,即使它在外部工作正常。

每个页面,包括Main.aspx,都来自“ProjectBasePage”,尽管这似乎不是问题。

Main.aspx:

<iframe id="webservername" src="" scrolling="no" frameborder="0" style="border:0px;height:13px;width:50px;vertical-align:bottom;"></iframe>

Overview.aspx.cs

[InjectProperties]
public partial class Overview : ProjectBasePage
{
    public ITableRepository TableRepo { get; set; }

Global.asax中

static IContainerProvider _containerProvider;

        public IContainerProvider ContainerProvider
        {
            get { return _containerProvider; }
        }

        protected void Application_Start(object sender, EventArgs e)
        {
            var builder = new ContainerBuilder();
            builder.RegisterType<TableRepository>().As<ITableRepository>();

            _containerProvider = new ContainerProvider(builder.Build());
        }

这真的是关于它,没有什么复杂的。如果我在Page_Load中手动“注入”或者自己设置属性,它工作正常,我只是不知道Autofac因为iframe加载而绊倒的地方,我没有足够的经验。我很乐意将iframe转换为Master Page或者其他东西,但这比我现在可以做的更多。

1 个答案:

答案 0 :(得分:0)

Autofac 已意识到该问题,但不会修复。

https://github.com/autofac/Autofac/issues/337

解决方法是简单地使用手动注入程序: https://autofaccn.readthedocs.io/en/latest/integration/webforms.html#manual-property-injection