ASP.NET Core WebService - PullRequest
       1

ASP.NET Core WebService

0 голосов
/ 30 августа 2018

Я новичок в ядре asp.net, и у меня возникают проблемы с инъекциями в веб-сервис.

namespace Web.WebServices
{
    public class InstallService : IService
    {
        private SQLContext _context;

        public InstallService(SQLContext context) 
        {
            _context = context;
        }  

        public string Fcn(string msg)
        {
            //Just for testing, the rest of the code is not altering the results
            return string.Join(string.Empty, msg.Reverse());
        }        
    }

    [ServiceContract]
    public interface IService
    {
        [OperationContract]
        string Fcn(string msg);

    }
}

Это метод ConfigureService:

    public void ConfigureServices(IServiceCollection services)
    {            
        services.AddMvc();
        services.AddSingleton(Configuration);
        services.AddDbContext<SQLContext>(options => options.UseSqlServer(Configuration.GetConnectionString("SQLConnection")));
        services.AddSoapExceptionTransformer((ex) => ex.Message);            
        services.AddScoped<IService, InstallService>();

    }

И способ настройки:

app.UseSoapEndpoint<InstallService>("/ServicePath.asmx", new BasicHttpBinding());

Теперь проблема, когда я пытаюсь использовать веб-сервис, я получаю ошибку:

"System.ServiceModel.FaultException. Нестатическому методу требуется цель"

И если я удаляю инъекцию, веб-служба работает нормально.

namespace Web.WebServices
{
    public class InstallService : IService
    {
        public string Fcn(string msg)
        {
            return string.Join(string.Empty, msg.Reverse());
        }        
    }

    [ServiceContract]
    public interface IService
    {
        [OperationContract]
        string Fcn(string msg);

    }
}

И способ настройки сервиса:

   public void ConfigureServices(IServiceCollection services)
    {            
        services.AddMvc();
        services.AddSingleton(Configuration);
        services.AddDbContext<SQLContext>(options => options.UseSqlServer(Configuration.GetConnectionString("SQLConnection")));
        services.AddSoapExceptionTransformer((ex) => ex.Message);            
        services.AddScoped(new InstallService());

    }

Но мне нужно использовать веб-сервис для сохранения данных на SQL Server.

Я почти уверен, что что-то не так, но это не так.

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Для использования SoapCore , попробуйте настроить службу как

            services.AddScoped<IService, InstallService>();

А затем воспользуйтесь услугой, как показано ниже:

            app.UseSoapEndpoint<IService>("/ServicePath.asmx", new BasicHttpBinding());
0 голосов
/ 30 августа 2018

Ваша проблема, кажется, разница между

public class InstallService : IService
{
    private SQLContext _context;

    public InstallService(SQLContext context) 
    {
        _context = context;
    }  
}

И

public class InstallService : IService
{
}

Вы получили это исключение.

"System.ServiceModel.FaultException. Нестатическому методу требуется цель"

Возможно, вы не получили SQLContext экземпляр.

Пожалуйста, отметьте Configuration.GetConnectionString("SQLConnection")) в вашем коде.

Как прочитать строку подключения в .NET Core?

https://docs.microsoft.com/en-us/ef/core/miscellaneous/connection-strings

Поправь меня, если я ошибаюсь. : Р

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...