2016-06-29 9 views
0

私は、ドメイン修飾ユーザ名を引数として取るコントローラ上でアクションを作成しようとしています。期間を含む経路パラメータを使用する

public class AccountsController : ApiController 
{ 
    [HttpGet, Route("accounts/{username}")] 
    public IHttpActionResult Get(string username) 
    { 
     return Ok(); 
    } 
} 

HTTP GET /accounts/test%40testingを実行してOK応答を返すことができます。

資格のあるユーザー名で同様のリクエストを行うと、コントローラのアクションがヒットしません。 HTTP GET /accounts/user%40testing.orgは404応答を取得します。リクエストがアプリケーションのOWINミドルウェアに入っているのがわかります。そのため、ホストから.NETコードに移すことができると確信しています。

Web APIがこれらの値を処理する方法について特別なことがあると思いますが、MSDNのドキュメントやこれを処理する方法のヒントが見つかりません。

どのようにしてこれらの値をアクションに渡すことができますか?

+0

IDがピリオドを含む場合、[ApiControllerは404を返します](http://stackoverflow.com/questions/13298542/apicontroller-returns-404-when-id-contains-period) –

答えて

1

別のルートを追加してください。一致するルートがそう404その結果見つからない場合

[Route("accounts/{username}.{ext}")] 

期間は、ファイルへのルートにそれをしようとしている、あなたはそれを明示的にキャッチする期間のルートを作成する必要があります。次に、メソッドのロジックにユーザー名とエクステントを連結して、既存のロジックと呼んでください。

関連する問題