First you need to recognize that there is literally no way to keep someone from attempting to call your web service. Even with an IP restriction it is still possible for someone to trigger the method by masquerading the IP address which someone might do if they just feel like messing with you.
At first, you might think this presents as deterrent for using an MVC approach for a web application but that really isn't the case. While it is certainly easier for someone to poach any web functionalities from an MVC web application since the method is capable of simply returning the data desired, there is nothing stopping someone from crawling through a rendered HTML response of a server side script either.
With that in mind there are a number of approaches you can use to limit access to this particular functionality but they are no different than any other web application MVC or not. However, which one you use depends entirely on the type of data being provided by this 3rd party service.
- If your website is strictly public, no usernames or passwords, one option would be for the web method to not always grab a "live value" of whatever data you happen to be polling from the 3rd party system. You could have the web method check when the last time the data was polled and if it's under some arbitrary limit set by you, simply return the cached value that you've saved on your server somewhere.
- If your site has a username and password mechanism in place, it is possible to limit the number of times per hour the service may be accessed by a particular user. Of course it is possible mechanisms could be devised to create multiple accounts automatically but a Captcha mechanism can assist you with this problem.
- Creating a Captcha mechanism for the service itself may be an option as well. While this won't help you with limiting the number of requests from a specific individual it will help ensure that a human must type in a response each time which would at least slow down the number of times the service is hit.
If you can give me a little more background on what it is that these services do I may be able to provide a more specific solution.
EDIT: Using POST or GET methods makes absolutely no difference in this situation.