ApiController zwraca 404, gdy ID zawiera kropkę

Mam ApiController i chcę używać adresów e-mail jako parametru ID dla żądań:

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

Jednak nie mogę tego zrobić (zwraca404):

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

Wszystkie następujące prace:

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

Mam ustalonerelaxedUrlToFileSystemMapping="true" w moim web.config asszczegółowy opis Phila Haacka.

Bardzo chciałbym, aby pełny adres e-mail działał, ale za każdym razem, gdy po nim następuje jakakolwiek inna postać, prośba zwraca 404. Każda pomoc byłaby bardzo mile widziana!

Rozwiązanie

Z powodu braku innych opcji udałem się w kierunku, w którym zasugerowała Maggie i skorzystałem z odpowiedzito pytanie aby utworzyć regułę przepisywania, aby automatycznie dodawać końcowy ukośnik, gdy potrzebuję wiadomości e-mail w adresie 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>

questionAnswers(3)

yourAnswerToTheQuestion