3

私は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 はtestingparameter に値を提供すべきではありませんfooか?

4

1 に答える 1