2017-02-01 2 views
0

Я написал API WCF. Он работает (работает) просто отлично. Теперь, когда мне нужно, чтобы открыть его для всеобщего доступа, я пытался реализовать ключ проверки API следующие the example of Ron Jacobs и the accompanying video on endpoint.tvWCF Service FileNotFound exception после реализации авторизации ключа

Это в основном просто использует список GUIDs, хранящийся в файле XML, которые представляют действительные ключи API. Запрос ключ авторизации передается через строку запроса и проверен в пользовательском ServiceAuthorizationManager так:

protected override bool CheckAccessCore(OperationContext operationContext) 
{ 
    return IsValidAPIKey(operationContext); 
} 

public static bool IsValidAPIKey(OperationContext operationContext) 
{ 
    string key = TvinQuery.GetAPIKey(operationContext); 

    Guid apiKey; 

    // Convert the string into a Guid and validate it 
    if (Guid.TryParse(key, out apiKey) && TvinQuery.APIKeys.Contains(apiKey)) 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
} 

TvinQuery.APIKeys простого List<string>, содержащий действительные GUIDs из файла XML.

Решение компилируется, но когда я публикую его на своем сервере и пытаюсь получить доступ к службе там, я получаю исключение FileNotFound для файла или сборки «WCFWebHttp» или одну из его зависимостей.

Причиной этого является то, очень очевидно, эта часть в поведении службы узла web.config:

<serviceAuthorization serviceAuthorizationManagerType="WCFWebHttp.APIKeyAuthorization, WCFWebHttp" /> 

К сожалению, ни поиск в моих сборках, ни в моей файловой системе, ни поиска, ни Интернет в NuGet пакетный поиск придумал сборку этого имени.

Средство просмотра событий и активированная трассировка также не отображали никакой дополнительной информации.

Что это? Как я могу решить эту ошибку? Есть ли что-то неправильно или отсутствует на примере? В видео он отлично работал, и это была живая презентация. : -?

ответ

1

Как от этой картины:

enter image description here

на https://blogs.msdn.microsoft.com/rjacobs/2010/06/14/how-to-do-api-key-verification-for-rest-services-in-net-4/

это выглядит как WCFWebHttp это сборка осуществляется в исходном коде образца вы использовали (который я не могу скачать прямо сейчас, чтобы убедиться из-за ошибки сервера).

+0

Я такой идиот. Да, это просто имя его проекта и имя APIKeyAuthorization - его собственный класс ServiceAuthorizationManager. * Стыд *. Все, что мне нужно было сделать, это изменить его на 'в соответствии с моим именем и классом проекта и деактивировать' aspNetCompatibilityEnabled' для меня. Работает сейчас. Благодаря! – LocEngineer

Смежные вопросы