MxRecordLookup을하고 있습니다. .NET Framework 4.0에서 DnsRecordListFree를 호출 할 때 오류가 발생합니다. Windows 7을 사용하고 있습니다. 어떻게 해결할 수 있습니까? 다음은 오류입니다..NET Framework 4.0에서 DnsRecordListFree 오류를 해결하는 방법은 무엇입니까?
System.MethodAccessException : 메소드를 통해 원시 코드를 호출하는 보안 투명 메소드로 시도하십시오.
[DllImport("dnsapi", EntryPoint = "DnsQuery_W", CharSet = CharSet.Unicode, SetLastError = true, ExactSpelling = true)]
private static extern int DnsQuery([MarshalAs(UnmanagedType.VBByRefStr)]ref string pszName, QueryTypes wType, QueryOptions options, int aipServers, ref IntPtr ppQueryResults, int pReserved);
[DllImport("dnsapi", CharSet = CharSet.Auto, SetLastError = true)]
private static extern void DnsRecordListFree(IntPtr pRecordList, int FreeType);
public List<string> GetMXRecords(string domain)
{
List<string> records = new List<string>();
IntPtr ptr1 = IntPtr.Zero;
IntPtr ptr2 = IntPtr.Zero;
MXRecord recMx;
try
{
int result = DnsQuery(ref domain, QueryTypes.DNS_TYPE_MX, QueryOptions.DNS_QUERY_BYPASS_CACHE, 0, ref ptr1, 0);
if (result != 0)
{
if (result == 9003)
{
//No Record Exists
}
else
{
//Some other error
}
}
for (ptr2 = ptr1; !ptr2.Equals(IntPtr.Zero); ptr2 = recMx.pNext)
{
recMx = (MXRecord)Marshal.PtrToStructure(ptr2, typeof(MXRecord));
if (recMx.wType == 15)
{
records.Add(Marshal.PtrToStringAuto(recMx.pNameExchange));
}
}
}
finally
{
DnsRecordListFree(ptr1, 0);
}
return records;
}
빠른 응답을 보내 주셔서 감사합니다. 따라서 메서드 이름이나 어셈블리 구성을 SecuritySafeCritical로 표시해야합니까? –