c# - 构建 Service Fabric Web Api 时出现错误,无法从 Fabric.StatelessServiceContext 转换为 Fabric.ServiceInitializationParameters

标签 c# azure asp.net-web-api asp.net-web-api2 azure-service-fabric

我在 following this tutorial 时遇到错误

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

有人有什么想法吗?

谢谢

最佳答案

所以问题是教程中有一个拼写错误。

解决方案是 OwinCommunicationListener 类中的 _parameters 应声明为 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) )
        };

我希望这会有所帮助。

关于c# - 构建 Service Fabric Web Api 时出现错误,无法从 Fabric.StatelessServiceContext 转换为 Fabric.ServiceInitializationParameters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44326817/

相关文章:

c# - 将逗号分隔的整数字符串转换为整数数组

c# - .Net套接字(UDP)发送,接收和计划

c# - 尝试从 ListBox 键值对读取 "Value"时出现无效的转换错误

ASP.NET Web API、Web 服务发现和客户端创建

c# - StructLayout 仅适用于结构?

Azure 自定义标记策略,排除资源类型

azure - 如何在 Windows Azure 中创建备份

azure - 如何强制diagnostics.wadcfg的内容反射(reflect)在wad-control-container中

c# - 防止 API 发生重大更改

c# - WebAPI DTO 响应请求消息传递模式