최근에 사용자 이름이 매개 변수로 제공되는 사용자의 암호를 얻을 수있는 응용 프로그램을 만들었습니다. 코드를 검사 한 결과 코드를 잘 볼 수있게되었습니다. 이제 클래스 라이브러리를 만들어서 추가 할 수있게되었습니다. 이 assemnbly SQL 서버 2008 년, 내 클래스 라이브러리의 코드입니다 아래. 여기Sql-Clr 보안 예외
ALTER FUNCTION [dbo].[fn_UserCredentials](@UserName [nvarchar](max))
RETURNS [nvarchar](max) WITH EXECUTE AS CALLER
AS
EXTERNAL NAME [DNN_USER_CREDENTIALS].[DnnUserCredentials].[GetUserPassword]
너무 :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.Security;
public class DnnUserCredentials
{
public static string GetUserPassword(string username)
{
MembershipUser objUser = Membership.GetUser(username);
return objUser.GetPassword();
}
}
는 내가 명령이 성공적으로 메시지 완료되었다
CREATE ASSEMBLY DNN_USER_CREDENTIALS FROM 'E:\NBM SITES\SqlProjectDll (DO NOT DELETE)\UserCredentials.dll' WITH PERMISSION_SET = SAFE
아래와 같이 SQL Server 2008의 어셈블리를 생성하고 난 다음과 같은 기능을 만들어 명령을 성공적으로 완료했습니다. 이제 함수를 호출하려고 할 때
SELECT [dbo].[fn_UserCredentials]('host')
그것은 오류 아래에 나를 던져 :
A .NET Framework error occurred during execution of user-defined routine or aggregate "fn_UserCredentials":
System.Security.SecurityException: Request for the permission of type 'System.Web.AspNetHostingPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.
System.Security.SecurityException:
at DnnUserCredentials.GetUserPassword(String username)
모든 솔루션을 제공합니다.