netcore web app hosted on my server
and i was wondering is it possible to implement reverse proxy in azure app service?
I should mention that i'm quit familiar with the YARP in .net i implement that and is just works perfectly but im looking for a better solution that i dont have to create another web app that includes just a reverse proxy app with YARP ! like a webserver config in azure or something else !
SampleApp.azurewebsite.com ---FORWARD----->https://sample.com or https://ServerIP
Thanks
Related
I'm facing issue with my multiple project solution in .net core webAPI. I've gatewayAPI which internally makes call to different microservices via http call.
Gateway API URI exposed to outer world which has domain as azure app name but the internal calls from gateway to microservices are configured with http://localhost:5001/{apiEndPoint} which is working fine in my local machine but after deploying it on azure app service I'm getting below error:
PostToServer call URL:'http://localhost:5001/api/authservice/authenticate' with Exception message An attempt was made to access a socket in a way forbidden by its access permissions. (localhost:5001).
Can someone please help me with this, I'm new to azure and learning on my own but could not find any solution for this yet.
PS: After going through some YouTube videos and blogs I got to know we have to use AKS but I'm not confident in that.
Would really appreciate any help on this issue.
The Gateway API you deployed to azure app service, it doesn't support custom port usage for 5001. Azure App Service only supports port 80|443(HTTP|HTTPS).
If you must use multiple ports in your actual project, then it is recommended to check whether Azure Cloud Service meets your needs. But it not the best choice.
The Best Practice:
Microservices architecture design
In short,create a Azure Gateway service, and your other microservice can be deployed in any where.(azure app service, vm or aks)
You just make sure you can access your microservices in your internal or public network environment.
If you're just learning, or the app isn't actually used by a lot of users, you can try the following suggestions:
Use SignalR (not azure signalr) to replace the websocket in your current project.
You have on azure app service, you can deploy your Gateway API Application to app service, and your other microservices can be deployed to Virtual Application in azure app service.
When I have an ASP.NET web app with some API controllers that has a route /api for example, I can publish the app to Azure Web App and use the api by accessing someproject.azurewebsites.net/api/controller.
However, when I separate a web API part from the web app project, I have to publish the web API project to new domain like someapiproject.azurewebsites.net. I want to integrate the web API project to the web app just as I did with one combined project.
Is this possible?
If you want to combine multiple APIs, you should take a look at Azure API Management.
I doubt that you can publish multiple APIs into a single Web API since both requires a startup where you configure the host.
What you can do to cleanup your code is to outsource the controller into different assemblies and configure them in the middleware. Here is an example.
Martin Brandl's answer is spot on. But if you want to go the poor man's route, you can create a reverse proxy from your ASP.NET Web App and map app traffic from someproject.azurewebsites.net/apiV2 to someapiproject.azurewebsites.net. This is not a HTTP 30x redirect - the URL will not change for users hitting your /apiV2. I've personally used this approach because the Azure API Management service can get a little pricey. If you don't need the sexy features like throttling, this can be a good way to go.
I am working on xamarin android. I want to connect my local DB to my mobile app. For this i have created a azure app api with swagger. Now i want it to use it locally i.e. i don't want it to host on azure portal all i want is to host it on my static IP on which I have bought. I have searched for this question but can't find any thing related to it. Is there a way to host my azure app api on custom server?
Any help would be highly appreciated
I have created a small and simple chat with signalr on a azure website. That doesn't work as expected.
After some hours on Google I found out, that signalr should be implemented different on Azure.
What is best practise?
Any good examples?
It should work on both mobile and in normal browsers.
Per the docs at: http://www.asp.net/signalr/overview/deployment/using-signalr-with-azure-web-sites
Deploying a SignalR Web App to Azure App Service
SignalR doesn't add any particular complications to deploying an
application to Azure versus deploying to an on-premises server. An
application that uses SignalR can be hosted in Azure without any
changes in configuration or other settings (though for WebSockets
support, see Enabling WebSockets on Azure App Service below.)...
To get signalr working when deploying to azure, I had to use
appBuilder.SetDataProtectionProvider(new MachineKeyProtectionProvider());
inside my Startup.cs Configure() method.
link to MachineKeyProtectionProvider gist
This is actually a workaround to this problem but it seems to work.
Follow this link : ASP.NET 5 app in Azure doesn't work with SignalR
I seem to miss somehting really obvious.
Anyways, i am developing a ReactJs web app and use nodejs (browser-sync) to host a simple web server for testing on localhost. Everything's working fine.
As for the server side i have a REST Service hosted in ASP.NET WebAPI.
I want to keep the urls in the web app relative for deployment reasons (because then it doesn't matter what the hostname is, as long it's running on the same domain).
I know out of experience that it's possible to host a self hosted ASP.NET WebAPI and a Web Application in IIS Express (at least in different paths) at the same time.
But now when i start browser-sync (which uses node http server internally as far as i can tell) and then WebAPI service host, the service host tells me it can't host on this url.
When i start it the other way around, browser-sync automatically increases the port so that it's on the next free port.
Does somebody have experience with it?
EDIT:
My question maybe in a more general sense: How do you develop web apps that are hosted on a local web server (in my case via nodejs) against a local running web service? And do you use relative URLs in your web app? Which leads to the problem that the service and the web have to run on the same server
I solved my problem like this:
ASP.NET WebAPI hosts under a different port then the nodejs web server
I set up a proxy in nodejs webserver for all urls starting with '/api/' and proxy these requests to the WebAPI port
I can use relative URLs in my client