cannot convert from 'System.Fabric.StatelessServiceContext' to 'System.Fabric.ServiceInitializationParameters'
尝试创建其中解释的Service Fabric Web Api时。
具体来说,我在下一行中得到它:
return new[] {
new ServiceInstanceListener(initParams =>
new OwinCommunicationListener("api",new Startup(),initParams) )
};
我没有尝试过多,因为Azure的Service Fabric是一个非常新的东西,所以在其他Web Api示例方面没有太多的东西。上面的教程本身甚至还没有完成。
有没有人有任何想法?
由于
答案 0 :(得分:12)
所以问题在于教程中存在拼写错误。
解决方案是,_parameters
类中的OwinCommunicationListener
应声明为StatelessServiceContext
,而不是ServiceInitializationParameters
。解决方案是Visual Studio的潜在修复建议的一种解决方案。
为了清楚起见,抛出错误的教程的原始代码为:
private readonly IOwinAppBuilder _startup;
private readonly string _appRoot;
private readonly ServiceInitializationParameters _parameters;
private string _listeningAddress;
private IDisposable _serverHandle;
public OwinCommunicationListener(
string appRoot,
IOwinAppBuilder startup,
ServiceInitializationParameters serviceInitializationParameters
)
{
_startup = startup;
_appRoot = appRoot;
_parameters = serviceInitializationParameters;
}
正确的代码是下一个,请注意第3行和第11行的差异:
private readonly IOwinAppBuilder _startup;
private readonly string _appRoot;
private readonly StatelessServiceContext _parameters;
private string _listeningAddress;
private IDisposable _serverHandle;
public OwinCommunicationListener(
string appRoot,
IOwinAppBuilder startup,
// Use StatelessServiceContext, NOT ServiceInitializationParameters
StatelessServiceContext serviceInitializationParameters
)
{
_startup = startup;
_appRoot = appRoot;
_parameters = serviceInitializationParameters;
}
电话保持不变:
return new[] {
new ServiceInstanceListener(initParams =>
new OwinCommunicationListener("api",new Startup(),initParams) )
};
我希望这会有所帮助。
答案 1 :(得分:0)
对于同一个教程,如果有人想知道缺少引用,这里是列表:
using System.Fabric;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Owin.Hosting;
using Microsoft.ServiceFabric.Services.Communication.Runtime;
using System.Globalization;using System.Collections.Generic;
using System.Fabric;
using Microsoft.ServiceFabric.Services.Communication.Runtime;
using Microsoft.ServiceFabric.Services.Runtime;
对于已安装的Nuget软件包:(转到项目资源管理器中的参考资料,右键单击> Nuget软件包资源管理器,如果没有,请安装以下内容)