【问题标题】:Site is working in port 80 but the same site is not working while changing the port to any other number站点在端口 80 中工作,但在将端口更改为任何其他号码时同一站点无法工作
【发布时间】:2014-11-20 06:43:28
【问题描述】:

我必须更改网站的端口以实现 ssl 代理,但当我尝试侦听 80 以外的任何其他端口时,该网站无法正常工作(例如:81,82,90,8443, 9443 等)。

该站点在端口 80 中运行良好,其他端口低于错误,

**

“/”应用程序中的服务器错误。

**

没有为此对象定义无参数构造函数。

说明:在执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详情: System.MissingMethodException:没有为此对象定义无参数构造函数。

来源错误: 在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。

堆栈跟踪:

[MissingMethodException:没有为此对象定义无参数构造函数。] System.RuntimeTypeHandle.CreateInstance(RuntimeType 类型,Boolean publicOnly,Boolean noCheck,Boolean& canBeCached,RuntimeMethodHandleInternal& ctor,Boolean& bNeedSecurityCheck) +0 System.RuntimeType.CreateInstanceSlow(布尔 publicOnly,布尔 skipCheckThis,布尔填充缓存,StackCrawlMark 和 stackMark)+159 System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) +256 System.Activator.CreateInstance(类型类型,布尔非公共)+127 System.Activator.CreateInstance(类型类型)+11 System.Web.Mvc.DefaultControllerActivator.Create(RequestContext requestContext, Type controllerType) +92

[InvalidOperationException:尝试创建类型为“WRIPMS.Controllers.LoginController”的控制器时发生错误。确保控制器有一个无参数的公共构造函数。] System.Web.Mvc.DefaultControllerActivator.Create(RequestContext requestContext, Type controllerType) +256 System.Web.Mvc.DefaultControllerFactory.CreateController(RequestContext requestContext, String controllerName) +81 System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext, IController& 控制器, IControllerFactory& 工厂) +280 System.Web.Mvc.c__DisplayClass6.b__2() +80 System.Web.Mvc.c__DisplayClassb1.<ProcessInApplicationTrust>b__a() +19 System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Func1 函数)+128 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +12650919 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +288

【问题讨论】:

  • 如果错误与依赖解析器有关,该站点是否可以在 80 端口中工作?此外,具有相同文件的站点在任何端口上的另一台服务器上工作。
  • 对不起,不完全是。我认为问题出在 IIS 配置上

标签: asp.net-mvc iis-7


【解决方案1】:

该错误表明您的控制器之一具有接受参数的构造函数。这对于具有依赖注入的应用程序来说是正常的。要使其工作,您必须创建一个自定义 IControllerFactory 并在应用程序启动时使用

注入它
ControllerBuilder.Current.SetControllerFactory(new MyControllerFactory());

由于您的应用程序在端口 80 上运行,我怀疑您有一个控制器工厂(或控制器工厂的依赖项),它具有硬编码以仅与端口 80 一起使用。

【讨论】:

  • 是的,存在依赖注入,但我没有在任何地方进行硬编码,因为它可以在我机器的 iis 中的任何端口中工作,并且也在另一台服务器中工作。我怀疑它与 iis 配置有关。
【解决方案2】:

对不起,这是我的错误,我的 web.config 中有一些冗余条目,例如 Keys 具有保存错误日志的路径等。我的理解是它不会造成任何麻烦。它也在本地服务器上工作。好吧,当我清理 web.config 冗余条目时,它就起作用了。

谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-30
    • 1970-01-01
    • 1970-01-01
    • 2016-09-08
    • 1970-01-01
    相关资源
    最近更新 更多