繁体   English   中英

构建Service Fabric Web Api时,获取错误无法从Fabric.StatelessServiceContext转换为Fabric.ServiceInitializationParameters

[英]Getting error cannot convert from Fabric.StatelessServiceContext to Fabric.ServiceInitializationParameters while building Service Fabric Web Api

我在学习本教程时遇到错误

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示例方面没有太多的东西。 上面的教程本身甚至还没有完成。

有没有人有任何想法?

谢谢

所以问题在于教程中存在拼写错误。

解决方案是, _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) )
        };

我希望这有帮助。

对于同一个教程,如果有人想知道缺少引用,这里是列表:

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软件包资源管理器,如果不存在,则安装如下)

在此输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM