Я пытаюсь выяснить, можно ли настроить ServiceStack для аутентификации вызова с использованием ключа API в заголовке хоста?Ошибка при попытке прочитать раздел конфигурации Web.config
Я нашел пример здесь: http://rossipedia.com/blog/2013/03/06/simple-api-key-authentication-with-servicestack/
, но по какой-то причине в моем Clients.cs, который выглядит следующим образом:
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Web;
namespace Servicestack_MVC.Models
{
public static class Clients
{
private static Lazy<ClientSection> section = new Lazy<ClientSection>(() =>
(ClientSection)ConfigurationManager.GetSection("apiClients"));
public static bool VerifyKey(string apiKey)
{
return section.Value.Cast<ClientSection.ClientElement>()
.SingleOrDefault(ce => ce.ApiKey == apiKey);
}
}
}
Я получаю ошибки:
Ошибки 9 Instance аргумент: невозможно преобразовать из «Servicestack_MVC.Models.ClientSection» в «System.Linq.IQueryable» и
Ошибка 10 «Servicestack_MVC.Models.ClientSection» не содержит определения для «Cast» и лучшей перегрузки метода расширения. «System.Linq.Queryable.Cast (System.Linq.IQueryable)» имеет некоторые недопустимые аргументы
В разделе web.config Я добавил:
<section name="apiClients" type="ClientSection" requirePermission="false"/>
и добавил раздел
<apiClients>
<clients>
<client name="Client1" apiKey="somelongrandomkey" />
<client name="Client2" apiKey="somelongrandomkey" />
<!-- etc -->
</clients>
</apiClients>
Может кто-нибудь сказать мне, что я делаю неправильно, пожалуйста?
Большое спасибо
У меня есть немного ближе Я * думаю *. Теперь я изменил VerifyKey на следующее: return section.Value.Clients.Cast(). SingleOrDefault (ce => ce.ApiKey == apiKey); , но теперь получение ошибки Ошибка Невозможно неявно преобразовать тип 'Servicestack_MVC.Models.ClientSection.ClientElement' в 'bool' –
К сожалению! Вы правы, это опечатка на моем посту. Он исправлен. – rossipedia