This can be done by using Microsoft URL Rewrite. If the module is installed, add the following rule to your web.config. Any request not matching "MyPage.aspx" (case insensitive) will respond by issuing an HTTP 301 with MyPage.aspx as the new location. You will need to whitelist all of the acceptable URLs under "conditions" though this is an alternative to using custom errors.
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="RedirectToMyPage" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{REQUEST_URI}" pattern="^MyPage.aspx$" negate="true" />
</conditions>
<action type="Redirect" url="MyPage.aspx" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Another option is to leverage URL Rewrite and customErrors by configuring customErrors to redirect 404 errors to a page such as "/404Error.aspx" (which doesn't need to exist) and then have a URL rewrite rule that will redirect all requests for "/404Error.aspx" to your homepage. This URL Rewrite rule would look like this:
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="RedirectToMyPage" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{REQUEST_URI}" pattern="^404Error.aspx$" />
</conditions>
<action type="Redirect" url="MyPage.aspx" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>