C# Owin自主机将不会启动

C# Owin自主机将不会启动,c#,owin,self-hosting,C#,Owin,Self Hosting,使用具有管理员权限的VS2015,我的主机将启动,并且我可以使用Nancyfx接收请求 IDisposable host = null; IDisposable HostStart() { try { return WebApp.Start<Startup1>("http://*:7002"); } catch (HttpListenerException ex)

使用具有管理员权限的VS2015,我的主机将启动,并且我可以使用Nancyfx接收请求

    IDisposable host = null;
    IDisposable HostStart()
    {
        try
        {
            return WebApp.Start<Startup1>("http://*:7002");
        }
        catch (HttpListenerException ex)
        {

            throw new  Exception(ex.Message);
        }
    }
IDisposable主机=null;
IDisposable主机启动()
{
尝试
{
返回WebApp.Start(“http://*:7002”);
}
捕获(HttpListenerException-ex)
{
抛出新异常(例如消息);
}
}
当我使用Visual Studio扩展创建一个安装项目,构建并安装,然后使用管理员权限运行时,我没有得到任何异常,但是找不到服务器。我已经关闭了防火墙。我现在已经没有想法了

更新:我得到一个例外

  An exception has been thrown by the taget of invocation.


  System.Reflection.TargetInvocationException: Exception has been thrown by          the  target of an invocation. ---> System.Exception: Object reference not set to   an instance of an object.
  at CabbyTechOffice.Startup1.Configuration(IAppBuilder app)
  --- End of inner exception stack trace ---
  at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[]    arguments, Signature sig, Boolean constructor)
  at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj,    Object[] parameters, Object[] arguments)
  at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags   invokeAttr,      Binder binder, Object[] parameters, CultureInfo culture)
  at Owin.Loader.DefaultLoader.<>c__DisplayClass12.   <MakeDelegate>b__b(IAppBuilder builder)
  at Owin.Loader.DefaultLoader.<>c__DisplayClass1.  <LoadImplementation>b__0(IAppBuilder builder)
 at Microsoft.Owin.Hosting.Engine.HostingEngine.ResolveApp(StartContext   context)
 at Microsoft.Owin.Hosting.Engine.HostingEngine.Start(StartContext context)
 at Microsoft.Owin.Hosting.Starter.DirectHostingStarter.Start(StartOptions    options)
 at Microsoft.Owin.Hosting.Starter.HostingStarter.Start(StartOptions options)
 at Microsoft.Owin.Hosting.WebApp.StartImplementation(IServiceProvider  services, StartOptions options)
 at Microsoft.Owin.Hosting.WebApp.Start(StartOptions options)
 at Microsoft.Owin.Hosting.WebApp.Start[TStartup](StartOptions options)
 at Microsoft.Owin.Hosting.WebApp.Start[TStartup](String url)
 at CabbyTechOffice.MAIN.HostStart()
调用标记引发了异常。
System.Reflection.TargetInvocationException:调用的目标已引发异常。-->System.Exception:对象引用未设置为对象的实例。
在CabbyTechOffice.Startup1.Configuration(IAppBuilder应用程序)
---内部异常堆栈跟踪的结束---
位于System.RuntimeMethodHandle.InvokeMethod(对象目标、对象[]参数、签名符号、布尔构造函数)
位于System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(对象obj,对象[]参数,对象[]参数)
在System.Reflection.RuntimeMethodInfo.Invoke(对象obj、BindingFlags invokeAttr、绑定器绑定器、对象[]参数、CultureInfo区域性)
在Owin.Loader.DefaultLoader.c__DisplayClass12。b_u_b(IAppBuilder建筑商)
在Owin.Loader.DefaultLoader.c__DisplayClass1。b__0(IAppBuilder)
在Microsoft.Owin.Hosting.Engine.HostingEngine.ResolveApp(StartContext上下文)上
在Microsoft.Owin.Hosting.Engine.HostingEngine.Start(StartContext上下文)中
位于Microsoft.Owin.Hosting.Starter.DirectHostingStarter.Start(StartOptions)
位于Microsoft.Owin.Hosting.Starter.HostingStarter.Start(StartOptions)
在Microsoft.Owin.Hosting.WebApp.StartImplementation(IServiceProvider服务,StartOptions)上
在Microsoft.Owin.Hosting.WebApp.Start(StartOptions)上
在Microsoft.Owin.Hosting.WebApp.Start[TStartup](开始选项)上
位于Microsoft.Owin.Hosting.WebApp.Start[TStartup](字符串url)
在CabbyTechOffice.MAIN.HostStart()中
似乎null ref正在启动中:

     public class MyBoot : DefaultNancyBootstrapper
    {
        protected override void ConfigureApplicationContainer(TinyIoCContainer container)
        {
            CabbyTechOfficeConfig fig = ConfigUI.GetCabbyTechConfig();
            if (fig == null)
            {
                throw new Exception("NO CONFIG");
            }
            ICabbytechOfficeDataAccess DB = null;
            try
            {
                DB = ConnDBCreater.CreateDB(fig.DatabaseComputerName + "\\" + fig.DatabaseInstanceName, "taxidb", fig.DbPassword, 8);
                IPEndPoint smsEP = null;
                SmsCommsMob sms = null;
                var comms = new ControlConnectAndSend(new IPEndPoint(IPAddress.Any, fig.DispatchFromPDAServerPort));
                try
                {
                    smsEP = new IPEndPoint(IPAddress.Parse(fig.SmsIp), fig.SmsPort);
                    sms = new SmsCommsMob(smsEP);
                }
                catch (Exception)
                {
                }
                StateInjector stateInjector = new StateInjector(DB, comms, sms);
                UdpBroadcasterJson.Send(new UDPCmd() { code = UDPCmd.commandsEnum.broadcastForDispatch }, stateInjector.UDPDispatchPort);

                try
                {
                    var comp = DB.CompaniesGet();
                    stateInjector.CompanyName = comp.company;
                }
                catch (Exception)
                {
                }

                try
                {
                    stateInjector.zones = DB.ZonesGet();
                }
                catch (Exception)
                {
                }
                try
                {
                    var locLog = new PdaLocLog();
                    var locLogger = new PdaLocLogger(DB, locLog);
                    stateInjector.locLogger = locLogger;
                }
                catch (Exception)
                {
                }
                container.Register<IStateInjector, StateInjector>(stateInjector);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }



        }
    }


}
public类MyBoot:DefaultNancyBootstrapper
{
受保护的覆盖无效配置ApplicationContainer(TinyIoCContainer)
{
CabbyTechOfficeConfig fig=ConfigUI.GetCabbyTechConfig();
如果(图==null)
{
抛出新异常(“无配置”);
}
ICabbytechOfficeDataAccess DB=null;
尝试
{
DB=ConnDBCreater.CreateDB(图DatabaseComputerName+“\\”+图DatabaseInstanceName,“taxidb”,图DbPassword,8);
IPEndPoint smsEP=null;
SmsCommsMob sms=null;
var comms=new ControlConnectAndSend(新的IPEndPoint(IPAddress.Any,图DispatchFromPDAServerPort));
尝试
{
smsEP=新的IPEndPoint(IPAddress.Parse(图SmsIp)、图SmsPort);
sms=新的SmsCommsMob(smsEP);
}
捕获(例外)
{
}
StateInjector StateInjector=新的StateInjector(数据库、通信、短信);
发送(新的UDPCmd(){code=UDPCmd.commandsEnum.broadcastForDispatch},stateInjector.UDPDispatchPort);
尝试
{
var comp=DB.CompaniesGet();
stateInjector.CompanyName=公司名称;
}
捕获(例外)
{
}
尝试
{
stateInjector.zones=DB.ZonesGet();
}
捕获(例外)
{
}
尝试
{
var locLog=new PdaLocLog();
var locLogger=新的PDA堵塞器(DB,locLog);
stateInjector.locLogger=locLogger;
}
捕获(例外)
{
}
容器寄存器(状态注入器);
}
捕获(例外情况除外)
{
抛出新异常(例如消息);
}
}
}
}

您有一系列带有空catch块的try/catch

            try
            {
                var comp = DB.CompaniesGet();
                stateInjector.CompanyName = comp.company;
            }
            catch (Exception)
            {
            }

            try
            {
                stateInjector.zones = DB.ZonesGet();
            }
            catch (Exception)
            {
            }
            try
            {
                var locLog = new PdaLocLog();
                var locLogger = new PdaLocLogger(DB, locLog);
                stateInjector.locLogger = locLogger;
            }
            catch (Exception)
            {
            }
这可能会留下stateInjector null,然后尝试使用它


您需要以这样一种方式处理捕获,即您可以在那些try/catch中记录任何问题。可能在失败的环境中存在问题,但由于捕获为空,您不知道这一点。

NancyFx引导程序中的TinyIoc容器中存在问题,原因是异常处理程序中的设计不正确,并且依赖项被注入空值

检查该端口是否未被使用
C:\>netstat-bano | findstr“7002”
我确实检查过,谢谢该端口没有服务。我必须更新问题,因为发生了一个异常,但我没有意识到。你能找到一个内部异常吗?是的,这是一个空引用异常。如果是空引用异常,与权限无关(我已删除我的答案)。投哪条线?您发布的代码中没有任何内容看起来应该抛出NRE