2017-02-01 12 views
0

WCF APIを作成しました。それはうまく動作します(走った)。 今、私はこれは、基本的には、有効なAPIキーを表すxmlファイルに保存されたGUIDのリストを使用していますthe example of Ron Jacobsthe accompanying video on endpoint.tvWCFサービスKey認可実装後のFileNotFound例外

を以下の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は、XMLファイルからの有効なGUIDを含む単純なList<string>です。

ソリューションはコンパイルされますが、サーバーに公開してサービスにアクセスしようとすると、ファイルまたはアセンブリ "WCFWebHttp"またはその依存関係のFileNotFound例外が発生します。

この原因は非常に明らかにweb.configファイルのサービス動作ノードでこの部分です:

残念ながら
<serviceAuthorization serviceAuthorizationManagerType="WCFWebHttp.APIKeyAuthorization, WCFWebHttp" /> 

、私のアセンブリを通しても私のファイルシステムによる検索やインターネット検索でもnugetでもありませんパッケージ検索でその名前のアセンブリが出てきました。

イベントビューアと有効なトレースでは、それ以上の情報は表示されませんでした。

この意味は?このエラーを解決するにはどうすればよいですか?この例で何か間違っているか欠けていますか?ビデオでうまくいきました。ライブプレゼンテーションでした。 : - ?

答えて

1

この絵から通り:WCFWebHttpは、あなたが使用したサンプルのソースコードで実装アセンブリであるように見えるhttps://blogs.msdn.microsoft.com/rjacobs/2010/06/14/how-to-do-api-key-verification-for-rest-services-in-net-4/

enter image description here

(私はダウンロードすることはできません今すぐサーバーエラーのために確認する)。

+0

私はそんなにばかです。はい、これは単に彼のプロジェクトの名前であり、 'APIKeyAuthorization'は彼のカスタムServiceAuthorizationManagerクラスの名前です。 *恥*。プロジェクト名とクラスに合わせて ''に変更し、 'aspNetCompatibilityEnabled'を無効にするだけでした。今すぐ動作します。ありがとう! – LocEngineer

関連する問題