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@company
http://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ązanieZ 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>