我在玩 XSockets.NET,我花了太多时间调试应该是一个简单的问题。我正在使用 XSockets 附带的标准模板,它创建了一个名为 XSockets.DevServer 的项目,并在该项目中创建了一个名为 DebugInstance 的类。当我在我的 Web 项目中托管这个 DebugInstance 类时,一切似乎都按预期工作。但是,当我尝试在 XSockets.Debug.Console 项目中托管它时,或者当我尝试让它在我的生产 IIS 实例上运行时,我在下面的代码中得到一个 NullReferenceException:
[ImportOne(typeof(IXBaseServerContainer))]
public IXBaseServerContainer wss { get; set; }
public DebugInstance()
{
try
{
Debug.AutoFlush = true;
this.ComposeMe();
// NullReferenceException on the next line - wss apparently never gets set.
wss.OnServersStarted += wss_OnServersStarted;
wss.OnServerClientConnection += wss_OnServerClientConnection;
wss.OnServerClientDisconnection += wss_OnServerClientDisconnection;
wss.OnError += wss_OnError;
wss.OnIncommingTextData += wss_OnIncommingTextData;
wss.OnOutgoingText += wss_OnOutgoingText;
wss.OnServersStopped += wss_OnServersStopped;
wss.StartServers();
}
catch (Exception ex)
{
Debug.WriteLine("Exception while starting server: " + ex);
Debug.WriteLine("Press enter to quit");
}
}
很明显,问题发生在 中this.ComposeMe()
,但没有故障排除信息,而且由于 XSockets 显然不是开源的,所以我无法通过代码来找出问题所在。
编辑:要清楚,我知道 NullReferenceException 是什么。wss
在这种情况下,它的直接原因是 null的事实。我想知道的是它的近因,即为什么ComposeMe()
不分配它,即使这显然是它应该做的。显然,XSockets 用来支持其插件架构的本土 IOC 应该找到 的实例IXBaseServerContainer
,但显然不是——我不知道为什么。而且没有来源,我什至不确定候选人IXBaseServerContainer
是什么。
编辑 2012-11-06:这是我的 app.config 的 appSettings 元素的样子:
<appSettings>
<add key="XSocketServerStartport" value="4502"/>
<add key="UsePolicyServer" value="true"/>
<add key="XSockets.PluginCatalog" value="XSockets\XSocketServerPlugins\"/>
<add key="XSockets.PluginFilter" value="*.dll"/>
<add key="XMessageInterceptorsEnabled" value="false"/>
<add key="XErrorInterceptorsEnabled" value="false"/>
<add key="XConnectionInterceptorsEnabled" value="false"/>
<add key="XHandshakeInterceptorsEnabled" value="false"/>
<add key="XSocketLogPath" value="XSockets\XSocketServerPlugins\Log"/>
<add key="XBufferSize" value="8192"/>
</appSettings>
我$(ProjectDir)\XSockets\XSocketServerPlugins\
和我的$(TargetDir)\XSockets\XSocketServerPlugins\
文件夹中都有下面提到的所有文件,例如:
10/29/2012 09:53 AM 15,872 XSockets.Core.Communication.dll
10/29/2012 09:53 AM 70,656 XSockets.Core.dll
10/29/2012 09:53 AM 8,192 XSockets.DevelopmentServer.dll
10/29/2012 09:53 AM 11,776 XSockets.Extensibility.Handlers.dll
10/29/2012 09:53 AM 10,240 XSockets.Extensibility.Interceptors.dll
10/29/2012 09:53 AM 23,040 XSockets.External.dll
10/29/2012 09:53 AM 24,064 XSockets.Protocol.dll
10/29/2012 09:53 AM 39,424 XSockets.Server.dll
11/05/2012 05:37 PM 12,288 XSockets.WebRTC.Prototype.Shared.Handlers.dll
有什么想法吗?