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)
Not related question to previous problem :
Hey ! :)
I've a question about a specific architecture. I have to add 2 new features :
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.
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 :
[/:m:i7cspscg] [:i7cspscg]<ins>Split the current project (WebAPI & Web) into 2 distinct process.</ins>
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 :
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 :)