當assembly發佈出去之後,會被誰呼叫,真的是不知道。
有時,需要確定只能被自己的程式所呼叫。可以利用檢查stackTrace的方法,得知誰在呼叫
public void WhoIsCallingMe()
{
string allowPublicKeyToken = "12345567890abcdefg";
System.Diagnostics.StackTrace st = new System.Diagnostics.StackTrace();
//取得呼叫者的FullName
string caller = st.GetFrame(1).GetMethod().ReflectedType.Assembly.FullName;
System.Text.RegularExpressions.Match m = Regex.Match(caller, "PublicKeyToken=(.{16})");
if ((!m.Success) || (!m.Groups[1].Value.Equals(allowPublicKeyToken)))
throw new System.Security.SecurityException("未知的caller");
}
沒有留言:
張貼留言