使用ServiceStack的IAppSettings实例化POCO对象不起作用

时间:2014-09-09 19:14:53

标签: servicestack

我已在AppSettings内注册了AppHost,如下所示:

container.Register<IAppSettings>(new AppSettings());

我在web.config文件中添加了以下设置:

<appSettings>
   <add key="baseaddress" value="http://example.com" />
   <add key="credential" value="{Username:foo,Password:bar}" />
</appSettings>

这是我的服务:

public class ExampleService : Service
{
    public IAppSettings Settings { get; set; }

    public void Post(ExampleRequest request)
    {
        // NOT WORKING -> always NULL!
        var credentials = Settings.Get<Credential>("credential", null);

        // OK
        var baseUrl = Settings.GetString("baseaddress");

        // more code...
    }
}

这是我的Credential课程:

public class Credential
{
    public string Username { get; set; }

    public string Password { get; set; }
}

始终设置baseUrl,但credentials变量始终为NULL,我不知道为什么......

2 个答案:

答案 0 :(得分:0)

您的配置<security mode="TransportWithMessageCredential">中需要这样的内容才能自动为帖子添加安全标头。或者您需要添加和解析自己的标头。您不会向您的&#34; Post&#34;显示您的完整网络配置或示例来电。所以我在这里做了一些假设。

答案 1 :(得分:0)

在最新的v4.0.31 of ServiceStack First Class support for AppSettings中,您不必自行注册,因为它已经为您注册了:

container.Register<IAppSettings>(new AppSettings());

但是我已经对此进行了测试,并且按预期工作,它将反序列化为填充的Credential实例,其中包含:

var credential = AppSettings.Get<Credential>("credential", null);

您确定要使用确切的密钥名称吗?因为您的最后一句使用baseUrlcredentials,但您的appSettings会说baseaddresscredential