C
C#2mo ago
Cruel

Question about IIS /API Issue

Had a really weird issue at work today in production where a specific endpoint on an api stopped working and would return 500 just saying 'An Error Has Occured' (or something like that). From the checks I did this 1 endpoint had just stopped working while all other endpoints in the project (and even endpoints in the same controller) continued to work. We had no code or database changes deployed to production around this time (or even for the previous week). It also seemed like the error wasn't even getting to the bit where it actually runs the endpoint logic etc, almost like it was at the IIS level or network level or something. I say this because one thing we noticed is that it would return a 500 response even if you called the endpoint unauthenticated (but if it actually hit our code it would have returned unauthorized) In the end restarting the app pool the api was in from IIS fixed the issue. Any ideas?
42 Replies
Schreck
Schreck2mo ago
Did you have another service, coming to the controller by DI, which crashed? How is the scope of the controller and the corresponding service? Maybe you have initialized the underlying service as singleton, while controllers in normal cases are registered in scoped way. So the other endpoints just worked fine because of the new scope and so on.
Unknown User
Unknown User2mo ago
Message Not Public
Sign In & Join Server To View
Cruel
Cruel2mo ago
Thanks for the response 🙂 I believe everything is registered scoped in this project and the actual code is very simple controller layer -> buisness logic layer -> data access layer using entity framework. The first endpoint returns all records from the database (this one wasnt working) while the endpoint that returns records by id was working and both endpoints have the same depedencies so I don't think it was a singleton issue but I will check the code at work tomorrow! Apologies for cross post, haven't been to this disc in a while and forgot about the questions section. I couldn't see anything in the event viewer that would indicate a problem but I will check again. We have IIS logs which show requests but they are not very detailed just showing which endpoint was called, statuscode etc
Unknown User
Unknown User2mo ago
Message Not Public
Sign In & Join Server To View
Cruel
Cruel2mo ago
Also worth mentoning this is a slightly older .net framework project but it does use dependency injection
Unknown User
Unknown User2mo ago
Message Not Public
Sign In & Join Server To View
Cruel
Cruel2mo ago
and the endpoint in question has been working fine for basically multiple years with no changes
Unknown User
Unknown User2mo ago
Message Not Public
Sign In & Join Server To View
Cruel
Cruel2mo ago
Not really, we don't have great logging system, mostly try/catch in controller endpoints that log to database but there was nothing in the database
Unknown User
Unknown User2mo ago
Message Not Public
Sign In & Join Server To View
Cruel
Cruel2mo ago
Yeah it definitely needs some work, but my thinking is that this error was happening outside of the code I had written, as if IIS was automatically returning a 500 or something on this specific endpoint
MODiX
MODiX2mo ago
TeBeCo
webform ? owin ? system.web ? aspnetcore 2.1 /
Quoted by
React with ❌ to remove this embed.
Unknown User
Unknown User2mo ago
Message Not Public
Sign In & Join Server To View
Cruel
Cruel2mo ago
It returned Internal Server Error and JSON { "Message": "An error has occurred." } I checked with postman and I think it return same via browser but didn't check exact status code
Unknown User
Unknown User2mo ago
Message Not Public
Sign In & Join Server To View
Cruel
Cruel2mo ago
In that case it must be something "before" my controller endpoint was hit, because that code all has databse logging, would return a proper errror message etc. Before it hits that endpoint there is also an Auhorize attribute and it clearly didnt hit that either
Unknown User
Unknown User2mo ago
Message Not Public
Sign In & Join Server To View
Cruel
Cruel2mo ago
*Authorize
Unknown User
Unknown User2mo ago
Message Not Public
Sign In & Join Server To View
MODiX
MODiX2mo ago
TeBeCo
webform ? owin ? system.web ? aspnetcore 2.1 ?
Quoted by
React with ❌ to remove this embed.
Cruel
Cruel2mo ago
It's a .net framework 4.6.x project I think
Unknown User
Unknown User2mo ago
Message Not Public
Sign In & Join Server To View
Cruel
Cruel2mo ago
2min ill see if I can find it I can see references to system.web.http etc but no owin
Unknown User
Unknown User2mo ago
Message Not Public
Sign In & Join Server To View
Cruel
Cruel2mo ago
No startup but yes to global.asax and that has reference to system.web.http and controllers inherit from ApiController
Unknown User
Unknown User2mo ago
Message Not Public
Sign In & Join Server To View
Cruel
Cruel2mo ago
No middlewares no and no owin references but there is system.web reference
Unknown User
Unknown User2mo ago
Message Not Public
Sign In & Join Server To View
Cruel
Cruel2mo ago
We have a filter that is used for auth before that actual endpoint method is called but I am certain that wasnt even being hit from sending the unauth'd requests so for sure the error is being returned before that point
Unknown User
Unknown User2mo ago
Message Not Public
Sign In & Join Server To View
Cruel
Cruel2mo ago
I checked and all dependencies are scoped for the request no singletons
Unknown User
Unknown User2mo ago
Message Not Public
Sign In & Join Server To View
Cruel
Cruel2mo ago
Actually maybe not, we are using Unity for DI and PerResolveLifetimeManager so maybe it isn't scoped per request..... I don't fully understand how that works
Unknown User
Unknown User2mo ago
Message Not Public
Sign In & Join Server To View
Cruel
Cruel2mo ago
But there is no unique dependency here that would fail and cause one of the endpoints to work and one wouldn't, they all share the same ones so I think that most likely isn't the problem
Unknown User
Unknown User2mo ago
Message Not Public
Sign In & Join Server To View
Cruel
Cruel2mo ago
Yeah no worries, thankyou for your suggestions I really appreciate it!
Unknown User
Unknown User2mo ago
Message Not Public
Sign In & Join Server To View
Cruel
Cruel2mo ago
Maybe 100 endpoints and is a dependency for many other systems But it is not complex, mostly just getting data from a database and returning it
Unknown User
Unknown User2mo ago
Message Not Public
Sign In & Join Server To View
Cruel
Cruel2mo ago
Yeah it's a big and old system that needs replacing for sure 😂
Unknown User
Unknown User2mo ago
Message Not Public
Sign In & Join Server To View
Want results from more Discord servers?
Add your server