I'm using C# .NET WebApi to create an API proxy, here is basic code that I have that works fine for most calls:
[HttpGet]
[Route("api/proxy/{*.}")]
public async Task<HttpResponseMessage> Get()
{
// some route here...
}
But when I have a URL with special chars, like : (%3F) or / (%2F) it fails with 404. If I remove the special chars, it works.
http://localhost:3000/api/proxy/viewing/v1/items/urn%3Aadsk.viewing%3Afs.file%3AdXJuOmVUE_dmVyc2lvbj0x%2Foutput%2Fd4b6ef1c-8d219bd84c9d%2F0.pf?domain=http%3A%2F%2Flocalhost%3A3000
And tried a few suggestions on web.config, but nothing:
<system.web>
<httpRuntime targetFramework="4.6" requestPathInvalidCharacters=""/>
<pages validateRequest="false" />
</system.web>
All other WebApi endpoints are working with a Global.asax like this:
public class Global : System.Web.HttpApplication
{
protected void Application_Start(object sender, EventArgs e)
{
GlobalConfiguration.Configure(Config.WebApiConfig.Register);
}
}
And the Config.WebApiConfig:
public class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
}
}