Base solution for your next web application
Starts in:
01 DAYS
01 HRS
01 MIN
01 SEC

Activities of "daws"

Answer

For info to hikalkan, I've also the same problem.

I've disabled the browser's cache on my DEV machine, so there is no problem. But for other machines, old cache still apply after switching language :)

Did you already had time to had a look on your related code parts ? :)

thks !

Indeed, TCP Server-Client communication must be fault-tolerant ;)

I already have implemented my own mecanism to retrieve data loss, based on a company logic. It's a custom mecanism; since tcp server can be from all over the world with shitty connections sometimes (asia -> EU). (FYI, each tcp server write its own sent flux in local files. I never loss data; if the flux is shut down, I can retrieve local files)

I could integrate this mecanism in my 1st solution (tcp client in IIS), but if it avoid me to call this mecanism each days (thks to a Windows service) ; i'll do it, for reliability purposes.

I had a look on RabbitMQ, quite interesting Framework.

I think that's not a best practice to inject a tcp listener 24h/24 without interruption in a IIS process; even if I successfuly did it like you said. (if I restart it each day, there can be a data loss)

I'll try the other practice, an Windows service containing tcp listener, WebAPI (specific port), & abp module zero integration.

for that, i struggle a little bit; i created a ConsoleApp with SelfAPI web host, which works fine. I try to integrate Abp into this project, but i can't get the WebAPI accessible from my browser.

I suppose that's because I need to inject routes into HttpSelfHostServer.

if it's that, do you know how to inject Dynamic routes from abp (DynamicApiControllerBuilder) into this config ? Thks !

using Abp;
using Abp.Application.Services;
using Abp.Modules;
using Abp.WebApi.Controllers.Dynamic.Builders;
using System;
using System.Reflection;
using System.Web.Http.SelfHost;

namespace ConsoleApplication3
{

    //#region AppService

    public interface IKartAppService : IApplicationService
    {
        int GetValue();
    }

    public class KartAppService : IKartAppService
    {
        public int GetValue()
        {
            return 5;
        }
    }

    //#endregion AppService


    public class Program
    {
        static void Main(string[] args)
        {
            using (var bootstrapper = new AbpBootstrapper())
            {
                bootstrapper.Initialize();

                var config = new HttpSelfHostConfiguration("http://localhost:8071");

                // TEST URL http://localhost:8071/api/services/test/kart/getValue
				
				// HOW TO inject Dynamic routes from abp (DynamicApiControllerBuilder) into this config ?
				
				                //config.Routes.MapHttpRoute(
                    //"API Default", "api/{controller}/{action}/{id}",
                    //new { id = RouteParameter.Optional });

                using (HttpSelfHostServer server = new HttpSelfHostServer(config))
                {
                    server.OpenAsync().Wait();
                    Console.WriteLine("Press Enter to quit.");
                    Console.ReadLine();
                }

            }
        }
    }

    public class TestAppModule : AbpModule
    {
        public override void Initialize()
        {
            IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly());

            DynamicApiControllerBuilder
               .ForAll<IApplicationService>(Assembly.GetExecutingAssembly(), "test")
               .Build();
        }
    }
}

Great !

I successfully created a RealTimeManager (dll, specific module) which I can insert in ApplicationService (via constructor injection) And in PostInitialize Web Project via IIocResolver like you specified in your doc.

public override void PostInitialize()
        {
            using (var realtimeManager = IocManager.ResolveAsDisposable<RealTimeManager>())
            {
                realtimeManager.Object.SetValue(666666666);
            }
public class RealTimeManager : IRealTimeManager, ISingletonDependency

indeed, my process need to be connected to TCP 24h/24 365day/year, so i'll prevent IIS to sleep process.

thks for the big help !

Thks for the explaination regarding webapi & autorisation !

Indeed, your project using separated project looks interestring but a little bit more complex.

For the rest, I created a visio. Black : what's already done (default abp working process) <span style="color:#FF0000">Red : what I want to achieve. (forget about SignalR on schema)</span>

The main problem is how to inject data in "Cache in Memory" from a tcp service.

Is it possible to encapsulate all theses processes in one running IIS process ? (except the TCP/IP Server which is external of course)

I don't think so, due to the TCP service (explained in previous post)

  • if yes, any idea ?
  • if not ... what's the best solution ? split to a specific process (windows service) containing cache, specific WebAPI just for this DataLayer, TCP/IP client, SignalR hub ? (AngularJS connecting to these services)

Not related question to previous problem :

  • if I want to cache all retrieved Database datas from WebAPI calls (with same parameters), (knowing that DB data are not modified), is there something already conceived in ABP ? or should I implement custom repository with caches ? or put this cache in BusinessLayer ?

Hey ! :)

I've a question about a specific architecture. I have to add 2 new features :

  • <ins>Memory cache accessible by WebAPI AND filled by a network connection</ins>

My goal is to have WebAPIs to retrieve DB stuff (already done) AND WebAPIs to retrieve infos from a realtime cache. I will NOT use SignalR for this part (for performance reason, i'll call webapi once each 5 minutes instead of receiving signalR datas each second) My realtime is delayed with 5-10 minutes, so it's not a problem.

This cache is not coming from DB but from a memory cache (list object) which is filled each second by a tcp stream.

Knowing that WebAPI IIS are initialized when called, i can't run a tcp service on IIS.

  • <ins>SignalR</ins>

I just need to create an windows service for that. (like you explained on <a class="postlink" href="https://github.com/aspnetboilerplate/aspnetboilerplate/issues/174">https://github.com/aspnetboilerplate/as ... issues/174</a> )

I see multiple solutions here for the memory cache :

  • <ins>Encapsulate my tcp service & WebAPIs TCP in a windows service.</ins>I create a separated windows service which SELF HOST webAPIs TCP and signalR In this way [list:i7cspscg] [*:i7cspscg]Current project (WebAPIs DB & Web) still works in the same process ISS
  • WebAPIs TCP are SELF HOSTED in a windows service & contains SignalR Hub also.

[/:m:i7cspscg] [:i7cspscg]<ins>Split the current project (WebAPI & Web) into 2 distinct process.</ins>

  • Web Project on IIS
  • ALL WebAPI (ABP DB & TCP) on a SELF HOSTED service. (with SignalR also)[/*:m:i7cspscg][/list:o:i7cspscg]
  • What do you think is the best solution ? (or another one ?)
  • [AbpAuthorize] is still going to work if webAPI is hosted on a different thread ? (Windows service vs Web IIS project)
  • To use ABPScripts WebAPI from different windows services (ports), do I simply include <script src="~/AbpScripts/GetScripts"> with the url & port from the specific service ?

Thks for your help !

Hey GVB !

I understand your message; but I think it is a little bit aggressive.

ABP and zero module are free; hikalkan does his best to help us on the forum, in his free time . There is no obligation for him to help us on ABP & ABP module Zero. (I do not talk about ABPZero here)

Maybe that's not (yet) useful for his project to make authentication WebAPI and that's not a priority.

The community can also develop and improve the project on github since it's opensource.

And I join you; this could be a very interesting feature (WebAPI Authentification) if it's realistic :) (i'll search tomorrow about it)

Nevermind, if you implement something similar ; I might be interested :) ( And perhaps integrate it into ABP github ? )

Indeed, AbpAuthorize works fine :)

I just misunderstood the doc ^^

Maybe adjust it's a good idea to clarify the doc :

  • AbpAuthorize <ins>for Application Service</ins>
  • AbpMvcAuthorize for MVC Controllers
  • AbpApiAuthorize for_<ins>regular (classic?)</ins>_Web API Controllers

Thks for your previous explaination:)

Hey :)

Based on the doc <a class="postlink" href="http://www.aspnetboilerplate.com/Pages/Documents/Authorization">http://www.aspnetboilerplate.com/Pages/ ... horization</a> "AbpAuthorize (AbpMvcAuthorize for MVC Controllers and AbpApiAuthorize for Web API Controllers)"

I would like to restrict my methods from WebAPI Controllers (ApplicationService) to logged users only.

I tried with [AbpApiAuthorize ] but it goes in the method even if not logged. With [AbpAuthorize] the restriction works fine (error user not logged in) and redirect me to the login page (that's normal).

Do I do something wrong with [AbpApiAuthorize] ? i searched on the github repository but there is no code where it's used. (I want to use "AbpApiAuthorize" to get the unAuthorizedRequest>true</unAuthorizedRequest>; & no redirection)

//[AbpApiAuthorize]
[AbpAuthorize]
public List<RiderDto> GetRiders(TimeIntervalDto interval)
{

Thks for your help :)

Showing 111 to 120 of 127 entries