J'ai un objet COM que j'essaie d'enrouler dans une classe C# afin de le rendre plus facilement disponible pour d'autres applications qui souhaitent le consommer.Comment consommer l'objet COM dans le fichier de classe ASP.NET
J'ai le code suivant qui crée une instance de l'objet COM, puis l'utilisation de la réflexion appelle la méthode pour extraire des données utilisateur. Ce code fonctionne correctement lorsqu'il est situé dans une page ASPX.
object jdObj = Server.CreateObject("jd_api.UserCookie");
string username = jdObj.GetType().InvokeMember("GetUserName", System.Reflection.BindingFlags.InvokeMethod, null, jdObj , null).ToString();
Cependant, lorsque je déplace le code dans un fichier de classe (JD_API.cs) pour abstraire du site actuel, je ne peux plus le faire fonctionner. Par exemple, j'ai la méthode statique suivante qui est déclarée comme telle:
public static string GetUserName() {
object jdObj = Server.CreateObject("jd_api.UserCookie");
string username = jdObj.GetType().InvokeMember("GetUserName",
System.Reflection.BindingFlags.InvokeMethod, null, jdObj , null).ToString();
return username;
}
Malheureusement, l'objet serveur est limité à certaines bibliothèques ASP.NET qui sont inclus par défaut dans les applications Web, et donc le code ci-dessus était un non-go. Donc, à ce stade, j'ai décidé d'essayer de créer une instance de l'objet COM comme tel:.
public static string GetUserName() {
Type type = Type.GetTypeFromProgID("jd_api.UserCookie");
object jdObj = Activator.CreateInstance(type);
string username = jdObj.GetType().InvokeMember("GetUserName", System.Reflection.BindingFlags.InvokeMethod, null, jdObj , null).ToString();
return username;
}
Cependant lors de l'exécution que je reçois une erreur qui dit: «Tentative de lecture ou d'écriture mémoire protégée Ceci est souvent un indication que l'autre mémoire est corrompue ".
Je ne sais pas où aller à partir d'ici. Toute aide sur la façon de créer abstraitement une instance de cet objet COM à une couche qui n'est pas dans l'application Web elle-même serait grandement appréciée. Merci!!