ich C# .NET WebAPI mit einem API-Proxy zu erstellen, hier ist einfach Code, die ich habe, die für die meisten Anrufe funktioniert gut:WebAPI Proxy 404 für URLs mit ungültigen Zeichen werfen
[HttpGet]
[Route("api/proxy/{*.}")]
public async Task<HttpResponseMessage> Get()
{
// some route here...
}
Aber als ich habe eine URL mit speziellen Zeichen, wie: (% 3F) oder/(% 2F) schlägt es mit 404 fehl. Wenn ich die speziellen Zeichen entferne, funktioniert es.
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
und versuchte, ein paar Vorschläge auf web.config, aber nichts:
<system.web>
<httpRuntime targetFramework="4.6" requestPathInvalidCharacters=""/>
<pages validateRequest="false" />
</system.web>
Alle anderen WebAPI Endpunkte mit einem Global.asax wie folgt arbeiten:
public class Global : System.Web.HttpApplication
{
protected void Application_Start(object sender, EventArgs e)
{
GlobalConfiguration.Configure(Config.WebApiConfig.Register);
}
}
Und die Config.WebApiConfig:
public class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
}
}
Wurde diese Frage nicht schon einmal gestellt und beantwortet? https://Stackoverflow.com/a/14368595/495455 und die offizielle Quelle ist Scott Hanselmans Blog [Experimente in Verrücktheit: Erlauben von Prozenten, Winkeln und anderen ungezogenen Dingen in der URL der ASP.NET/IIS Anfrage] (http: //www.hanselman.com/blog/ExperimenteInWackinessAllowingPercentsAnglebracketsAndOtherNaughtyThingsInTheASPNETIISRequestURL.aspx) –
Sie könnten versuchen, die schnelle und schmutzige Route: System.Uri.EscapeDataString (Zeichenfolge Daten) ..... um eine Zeichenfolge ohne diese Sonderzeichen zurückgeben? (auch neugierig, ist dies für eine Schmiede-Projekt?) – BKSpurgeon