簡體   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