站点正在端口80中工作,但在将端口更改为任何其他号码时,同一站点不起作用

时间:2014-11-20 06:43:28

标签: asp.net-mvc iis-7

我必须更改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(Boolean publicOnly,Boolean skipCheckThis,Boolean fillCache,StackCrawlMark& stackMark)+159    System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly,Boolean skipCheckThis,Boolean fillCache,StackCrawlMark& stackMark)+256    System.Activator.CreateInstance(Type type,Boolean nonPublic)+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&amp; controller,IControllerFactory&amp; factory)+280    System.Web.Mvc。&lt;&gt; c__DisplayClass6.b__2()+80    System.Web.Mvc。&lt;&gt; c__DisplayClassb 1.<ProcessInApplicationTrust>b__a() +19 System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Func 1 func)+128    System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()+ 12650919    System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean&amp; completedSynchronously)+288

2 个答案:

答案 0 :(得分:0)

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

在应用程序启动时注入它
ControllerBuilder.Current.SetControllerFactory(new MyControllerFactory());

由于你的应用程序正在使用端口80,我怀疑你有一个控制器工厂(或控制器工厂的依赖项),它有硬编码的东西只能用于端口80。

答案 1 :(得分:0)

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

谢谢。