密钥授权实施后的WCF服务FileNotFound异常

时间:2017-02-01 11:19:44

标签: c# web-services rest wcf api-key

我编写了一个WCF API。它运行(运行)就好了。 现在,我需要将其打开以进行公开访问,我尝试在the example of Ron Jacobsthe accompanying video on endpoint.tv之后实施API密钥验证

这基本上只使用存储在xml文件中的GUID列表来表示有效的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>,其中包含xml文件中的有效guid。

解决方案编译,但是当我在我的服务器上发布它并尝试访问那里的服务时,我得到了文件或程序集的FileNotFound异常&#34; WCFWebHttp&#34;或其中一个依赖。

原因很明显,这部分位于web.config的服务行为节点中:

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

不幸的是,无论是通过我的程序集搜索还是通过我的文件系统搜索,还是通过互联网搜索或nuget软件包搜索都没有找到该名称的程序集。

事件查看器和已启用的跟踪也未显示任何进一步的信息。

这是什么?我该如何解决这个错误?这个例子有什么不对或遗漏的吗?它在视频中运行得很好,这是一个现场演示。 : -

1 个答案:

答案 0 :(得分: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是在您使用的示例的源代码中实现的程序集(我现在无法下载以确保服务器错误)。