aspnet の役割とセキュリティを備えた 1 つの wcf サービスを作成しました。
あるWebサイトでそれを消費して確認しようとすると、正しいユーザー名とパスワードで完全に機能しますが、ユーザー名とパスワードが正しくないとエラーが発生します:
保護されていない、または誤って保護された障害が相手から受信されました。障害コードと詳細については、内部の FaultException を参照してください。
代わりに「アクセスが拒否されました」と表示されることを期待していました。
それで、なぜですか?
アップデート
あなたは正しいFaultContractsを追加できます...しかし、追加しても同じエラーが発生します..さらに、同じユーザーがinroleであるかどうかを確認しようとしましたが、そうでない場合は外部でFaultExceptionを発生させました...
実際の「アクセスが拒否されました」を取得せずに、同じエラーが引き続き発生します。
資格情報と役割を確認するためにaspnetフォーム認証を使用したことを更新するために...コードはやや似ています
public class SampleService : ISampleService
{
[PrincipalPermission(SecurityAction.Demand, Role = "admin")]
public string GetCurrentTime()
{
if (!Roles.IsUserInRole(HttpContext.Current.User.Identity.Name, "admin"))
return DateTime.Now.ToString();
else
throw new FaultException("Access is denied");
}
}
[ServiceContract]
public interface ISampleService
{
[OperationContract]
string GetCurrentTime();
}
クライアント側で、私が消費したところで、このサービス...
protected void btnSubmit_Click(object sender, EventArgs e)
{
try
{
ChannelFactory<AuthCustWithAspnetRoleService.ISampleService> factory = new ChannelFactory<AuthCustWithAspnetRoleService.ISampleService>("*");
factory.Credentials.UserName.UserName = txtUserName.Text.Trim(); // "admin";
factory.Credentials.UserName.Password = txtPassword.Text.Trim(); // "admin";
AuthCustWithAspnetRoleService.ISampleService proxy = factory.CreateChannel();
lblMessage.Text = proxy.GetCurrentTime();
}
catch (Exception ex)
{
lblMessage.Text = ex.Message;
}
}
これが私のコードについてより多くのことを導き、あなたが私をより詳細に助けてくれることを願っています....他の(この概念を理解した参照はほとんどありません)が「アクセスが拒否されました」と表示された理由がわかりません。システムから...