私はMVC 4 Web APIを使用しており、このダミーの ValueProvider があります。
DummyValueProvider.cs
class DummyValueProvider : IValueProvider
{
public DummyValueProvider()
{
}
public bool ContainsPrefix(string prefix)
{
return true;
}
public ValueProviderResult GetValue(string key)
{
return new ValueProviderResult("testing", "testing", System.Globalization.CultureInfo.InvariantCulture);
}
}
class DummyValueProviderFactory : System.Web.Http.ValueProviders.ValueProviderFactory
{
public override IValueProvider GetValueProvider(System.Web.Http.Controllers.HttpActionContext actionContext)
{
return new DummyValueProvider();
}
}
この ValueProvider は、要求true
されたキーに対して返される必要があるため、必要なときに常にモデル バインダーに値を提供します。ValueProvider は、次のように WebApiConfig に登録されます。
WebApiConfig.cs
config.Services.Add(typeof(ValueProviderFactory), new DummyValueProviderFactory());
コードは正常にコンパイルおよび実行されます。Account API コントローラーにも次のアクションがあります。
AccountController.cs
public HttpResponseMessage Register(string foo) { ... }
以下のように呼び出すと、アクションは正常に呼び出されます。
/register?foo=bar
そして、さすがfoo
に埋もれてしまう・・・。bar
しかし、私が電話した場合:
/register
サーバーは、メッセージとともに 404 を返しますNo HTTP resource was found that matches the request URI 'http://localhost:14459/register'
。
また、ContainsPrefix() メソッドと GetValue() メソッド内にブレークポイントを配置しましたが、トリガーされることはありません。
私は何を間違っていますか?DummyValueProvider はtesting
parameter に値を提供すべきではありませんfoo
か?