私は ApiController を持っており、リクエストの ID パラメータとして電子メール アドレスを使用したいと考えています。
// GET api/employees/email@address.com
public CompactEmployee Get(string id) {
var email = id;
return GetEmployeeByEmail(email);
}
ただし、これを機能させることはできません ( 404を返します):
http://localhost:1080/api/employees/employee@company.com
以下はすべて機能します。
http://localhost:1080/api/employees/employee@company
http://localhost:1080/api/employees/employee@company.
http://localhost:1080/api/employees?id=employee@company.com
Phil HaackrelaxedUrlToFileSystemMapping="true"
の詳細に従って web.config に設定しました。
完全な電子メールアドレスが機能することを非常に望んでいますが、ピリオドの後に他の文字が続くと、要求は常に 404 を返します。
解決
他のオプションがないため、マギーが提案した方向に向かい、この質問の回答を使用して、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>