3

以下のようなリソースがあるとします。

namespace OpenRastaApp.Resources
{
    public class Foo
    {
        public string Bar { get; set; }
    }
}

次のようなハンドラ:

namespace OpenRastaApp.Handlers
{
    public class FooHandler
    {
        public object GetAll()
        {
            ArrayList foos = new ArrayList();
            foos.Add(new Foo() { Bar = "Hello," });
            foos.Add(new Foo() { Bar = " world!" });
            List<Foo> result = new List<Foo>(foos.ToArray(typeof(Foo)) as Foo[]);
            return result;
        }
        public object Get(int id)
        {
            return new Foo() { Bar = "Baz" };
        }
    }
}

および構成は次のとおりです。

namespace OpenRastaApp
{
    public class Configuration : IConfigurationSource
    {
        public void Configure()
        {
            using (OpenRastaConfiguration.Manual)
            {
                ResourceSpace.Has.ResourcesOfType<Foo>()
                    .AtUri("/foos")
                    .And.AtUri("/foos/{id}")
                    .HandledBy<FooHandler>()
                    .AsJsonDataContract();
            }
        }
    }
}

/foos/1 は、次のように期待どおりにレンダリングされます。

{"Bar":"Baz"}

ただし、/foos はまったくレンダリングされません。デバッグ コンソールに、「8-[2010-09-22 13:39:29Z] Information(0) No response codec was found for. The response entity is null or a response codec is already set.」というメッセージが表示されます。返す前に、結果が null でないことを確認しました。Foo[] も返そうとしましたが、同じエラーが発生しました。

4

2 に答える 2

3

理解した。次のように構成を変更する必要がありました。

namespace OpenRastaApp
{
    public class Configuration : IConfigurationSource
    {
        public void Configure()
        {
            using (OpenRastaConfiguration.Manual)
            {
                ResourceSpace.Has.ResourcesOfType<List<Foo>>()
                    .AtUri("/foos")
                    .HandledBy<FooHandler>()
                    .AsJsonDataContract();
                ResourceSpace.Has.ResourcesOfType<Foo>()
                    .AtUri("/foos/{id}")
                    .HandledBy<FooHandler>()
                    .AsJsonDataContract();
            }
        }
    }
}
于 2010-09-22T19:16:34.007 に答える
0

参考までに、次のこともできます。

ResourceSpace.Has.ResourcesOfType<Foo>()
    .AtUri("/foos/{id}")
    .HandledBy<FooHandler>()
    .AsJsonDataContract();
ResourceSpace.Has.ResourcesOfType<List<Foo>>()
    .WithoutUri
    .AsJsonDataContract();
于 2013-10-22T08:15:05.913 に答える