ApiController devuelve 404 cuando ID contiene el período

Tengo un ApiController y quiero usar las direcciones de correo electrónico como el parámetro de ID para las solicitudes:

// GET api/employees/[email protected]
public CompactEmployee Get(string id) {
   var email = id;
   return GetEmployeeByEmail(email);
}

Sin embargo, no puedo hacer que esto funcione404):

http://localhost:1080/api/employees/[email protected]

El siguiente todo trabajo:

http://localhost:1080/api/employees/employee@companyhttp://localhost:1080/api/employees/employee@company.http://localhost:1080/api/[email protected]

he puestorelaxedUrlToFileSystemMapping="true" en mi web.config comodetallado por Phil Haack.

Me encantaría mucho la dirección de correo electrónico completa para trabajar, pero en cualquier momento en que el período sea seguido por cualquier otro personaje, la solicitud devuelve un 404. ¡Cualquier ayuda sería muy apreciada!

Solución

Debido a la falta de otras opciones, me dirigí en la dirección que Maggie sugirió y usé la respuesta deesta pregunta para crear una regla de reescritura para agregar automáticamente una barra diagonal cuando necesito un correo electrónico en la URL.

<system.webServer>
  ....   
  <rewrite>
    <rules>
      <rule name="Add trailing slash" stopProcessing="true">
        <match url="^(api/employees/.*\.[a-z]{2,4})$" />
        <action type="Rewrite" url="{R:1}/" />
      </rule>
    </rules>
  </rewrite>
</system.webServer>

Respuestas a la pregunta(3)

Su respuesta a la pregunta