Wir haben einen Web-API-Dienst ausgeführt, der das Attribut-Routing verwendet. Wenn eine Anfrage mit der Route gesendet wird, die keine Dateierweiterung enthält, wird sie an die richtige Aktion weitergeleitet, die die Abfragezeichenfolge richtig auswertet. Wenn wir eine Route haben, die eine Dateierweiterung enthält, wenn Sie vor der Abfragekennung kein '/' einfügen, wird 404 nicht gefunden.Warum geben meine Anforderungen mit Dateierweiterungen 404 zurück, wenn der Schrägstrich vor der Abfragekennung weggelassen wird?
Zum Beispiel:
Arbeits:
https://example/api/interview/test/70ac327a-d77b-41da-bf9c-76af8efdfbbaf/Test.docx/?format=Unspecified
nicht gefunden:
https://example/api/interview/test/70ac327a-d77b-41da-bf9c-76af8efdfbbaf/Test.docx?format=Unspecified
Es ist wahrscheinlich auch erwähnenswert, dass die Route Parameter mit der Dateierweiterung ist optional .
Ein Beispiel Route ist:
[HttpPost]
[Route("api/HDCS/Interview/{subscriberId}/{packageId}/{templatename?}")]
public IHttpActionResult Interview(string subscriberId, string packageId, string format = null,
[FromUri] IEnumerable<string> markedVariables = null, string templatename = null,
bool encodeFileNames = false, string retrieveFromHub = null){...}
Edit:
Sorry, ich sollte auch erwähnt haben, dass wir
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
in unserem web.config