UsingServerinMvc.Controller我自己继承了Mvc.Controller,然后我所有的controller都继承自。我使用接口编写了一个提供程序并将其实现为MyService,构造函数使用HttpServerUtilityBase的Mvc.Controller的Server属性。但是,我在App.Controller的构造函数中实例化了MyService。问题在于构造MyService时控制器的Server属性为null。我使用publicController():base(){}来获取要构建的基础。但是,服务器仍然为空。我想尽可能避免使用Web.HttpContext.Current.Server。有人解决了这个问题吗?编辑:好吧,我已经实施了tvanfosson的建议,当我的应用程序在属性get方法中构造MyService时,Server仍然为空。编辑2:没关系,我是个白痴。我有另一个使用服务器控制器并且没有改变它。结案。使用惰性初始化构建您的服务。私有MyService服务;publicMyServiceService{get{if(this.service==null){this.service=newMyService(this.Server);}返回这个服务;然后你的服务实际上不会被实例化优化,直到它被用于控制器操作,此时Server属性已经设置。我在App.Controller的构造函数中实例化MyService。这是你的问题。您需要传递一个已经内置到App.Controller构造函数中的MyService实例。查看控制反转/依赖注入反转模式,以及一些使这些模式变得简单的库(请参阅此列表)。为什么需要服务器参考?你在做url/html编码还是什么?如果是这样,您可以改用HttpUtility并完全摆脱上下文引用。这是一个非常古老的问题,但这个话题仍然是相关的。因此,2009年可能没有提供的2017年提示:确实,Server在Controller构造函数中为null。但是你可以使用OnActionExecuting事件:当前服务器=服务器;//CurrentServer是我稍后需要的一些实例变量。这对我来说很好。以上就是C#学习教程:Mvc中使用Server分享的全部内容。侵权请点击右侧联系管理员删除。如需转载请注明出处:
