我已在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
,我不知道为什么......
答案 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);
您确定要使用确切的密钥名称吗?因为您的最后一句使用baseUrl
和credentials
,但您的appSettings会说baseaddress
和credential
。