sslで基本認証を使用していて、Web APIをデバッグするときに問題なく動作しているようです。 IsAuthorizedメソッドが呼び出され、これまでのところ動作しています。しかし、webapiをサーバーに公開すると、次のエラーメッセージが表示されます。カスタム権限の問題が公開されました
エラーは が発生しました。 SQLデータベースへの接続はありません。 System.Web.HttpException System.Web.DataAccess.SqlConnectionHelper.CreateMdfFile(文字列 fullFileName、文字列DATADIR、ストリングたconnectionString)
MDFファイルを作成しようとit'sなぜ私も、知りませんwebapiがSQL Server Expressインスタンスを使用しているためです。 authorize属性を削除すると、すべてがうまくいきます。
protected override bool IsAuthorized(HttpActionContext actionContext)
{
if (Thread.CurrentPrincipal.Identity.Name == null || Thread.CurrentPrincipal.Identity.Name.Length == 0)
{ // If an identity has not already been established by other means:
AuthenticationHeaderValue auth = actionContext.Request.Headers.Authorization;
if (auth != null && string.Compare(auth.Scheme, "Basic", StringComparison.OrdinalIgnoreCase) == 0)
{
string credentials = UTF8Encoding.UTF8.GetString(Convert.FromBase64String(auth.Parameter));
int separatorIndex = credentials.IndexOf(':');
if (separatorIndex >= 0)
{
string email = credentials.Substring(0, separatorIndex);
string password = credentials.Substring(separatorIndex + 1);
//using Facade to get access to database and check credentials
if (//check if valid)
{
Thread.CurrentPrincipal = actionContext.ControllerContext.RequestContext.Principal = new GenericPrincipal(new GenericIdentity(email, "Basic"), System.Web.Security.Roles.Provider.GetRolesForUser(email));
}
}
}
return base.IsAuthorized(actionContext);
}
誰かが私を助けることができたらとても嬉しいです!
に応じてカスタム認証を実装し直すことで、問題を修正し、あなたがそれのためのコードを示してもらえますか? –
今すぐメソッドを追加しました:) – GC268DM
電子メールとパスワードのデータベースを検索するためのコンテキストに関連する接続文字列はありますか? – Thennarasan