private http://privatehost/vdir/api
Application running OK for about one month. App under consistent but low load. No change to deployment. Suddenly, a single api GET call to service stack via the public https endpoint started to return 404 Not Found. An other API in the same assembly and a similar signature continued to run OK. The failing API still worked via the private URL.
Killing the aspnet worker processed turned out to resolve the 404.
Even viewer is giving no clues.
Has anybody similar unexplained “random” behavior before? Any tips on where it can originate? Any hints welcome.
This behavior doesn’t sound familiar. How are you making the same instance available via 2 different urls? Are you using a proxy for the public/external endpoint? If so does restarting the proxy resolve the issue?
I’d start investigating by trying to track down the HTTP Request that ServiceStack receives, if it’s being proxied you should be able to inspect the traffic on the ServiceStack Web Server using WireShark. You want to look at the failed HTTP Response that ServiceStack returns for that request. Otherwise if you enable the RequestLogs Feature you should be able to inspect the Requests ServiceStack receives.
In IIS itself, by putting host-headers/bindings on the site. Each VDIR has a single worker process with private and a public binding.
Just typing the url in the address bar from my machine directly connected to internet reproduced the issue the users were experiencing. Its a plain URL / GET, no query string: https://publicdomain.com/vdir/api/top-menu. I did not dump the full response with headers (should have done it via Chrome F12…).
Can you post the raw HTTP Request/Response Headers? (can use WebInspector/Fiddler), it will show amongst other things if the request is reaching ServiceStack.