J'ai écrit une petite application en utilisant C# pour copier un document dans un dossier «Mes documents» sur notre serveur DMS.IManExt ImportCmd problème
J'ai ajouté le code autour de la liste fournie dans le 'WorkSite SDK 8: Utiliser le blog IMANEXT2Lib.IManRefileCmd pour créer un dossier de nouveaux documents'. En utilisant ce code dans une application WinForm, je n'ai aucun problème pour copier le fichier du dossier source dans le dossier Mes Documents de DMS des utilisateurs.
Cependant, si j'utilise le code dans une application de ligne de commande/.dll ou tout autre type d'application (autre que WinForm) pendant le processus de copie, je reçois les messages d'erreur;
1.
Une erreur est survenue lorsque vous essayez d'enregistrer l'événement! IManExt: Une erreur est survenue lors de la tentative d'enregistrement de l'événement!
L'accès est refusé.
2.
Le document a été importé à la base de données, mais ne pouvait pas être ajouté à le dossier. IManExt: Le document a été importé dans la base de données, mais il n'a pas pu être ajouté au dossier dans .
IManExt.LogRuleEventsCmd.1: Une erreur s'est produite lors de la tentative d'enregistrement de l'événement!
IManExt.LogRuleEventsCmd.1: L'accès est refusé.
Une erreur s'est produite lors de la tentative d'enregistrement de l'événement!
-% -
Est-ce que quelqu'un sait pourquoi je recevoir le 'Accès refusé' des messages d'erreur lors de l'utilisation d'une application non-WinForms pour copier des documents? Que devrais-je faire pour contourner ce problème?
Toute aide serait incroyable!
code en place:
public void moveToDMS(String servName, String dBName, String foldName)
{
const string SERVERNAME = servName; //Server name
const string DATABASENAME = dBName; //Database name
const string FOLDERNAME = foldName; //Matter alias of workspace
IManDMS dms = new ManDMSClass();
IManSession sess = dms.Sessions.Add(SERVERNAME);
sess.TrustedLogin();
//Get destination database.
IManDatabase db = sess.Databases.ItemByName(DATABASENAME);
//Get destination folder by folder and owner name.
IManFolderSearchParameters fparms = dms.CreateFolderSearchParameters();
fparms.Add(imFolderAttributeID.imFolderOwner, sess.UserID);
fparms.Add(imFolderAttributeID.imFolderName, FOLDERNAME);
//Build a database list in which to search.
ManStrings dblist = new ManStringsClass();
dblist.Add(db.Name);
IManFolders results = sess.WorkArea.SearchFolders(dblist, fparms);
if (results.Empty == true)
{
//No results returned based on the search criteria.
Console.WriteLine("NO RESULTS FOUND!");
}
IManDocumentFolder fldr = null;
if (results.Empty == false)
{
//Assuming there is only one workspace returned from the results.
fldr = (IManDocumentFolder)results.ItemByIndex(1);
}
if (fldr != null)
{
// Import file path
string docPath = @"C:\Temp\";
string docName = "MyWord.doc";
// Create an instance of the ContextItems Collection Object.
ContextItems context = new ContextItemsClass();
// Invoke ImportCmd to import a new document to WorkSite database.
ImportCmd impCmd = new ImportCmdClass();
// The WorkSite object you pass in can be a database, session, or folder.
// Depends on in where you want the imported doc to be stored.
context.Add("IManDestinationObject", fldr); //The destination folder.
// Filename set here is used for easy example, a string variable is normally used here
context.Add("IManExt.Import.FileName", docPath + docName);
// Document Author
context.Add("IManExt.Import.DocAuthor", sess.UserID); //Example of a application type.
// Document Class
context.Add("IManExt.Import.DocClass", "BLANK"); //Example of a document class.
//context.Add("IManExt.Import.DocClass", "DOC"); //Example of a document class.
// Document Description (optional)
context.Add("IManExt.Import.DocDescription", docName); //Using file path as example of a description.
// Skip UI
context.Add("IManExt.NewProfile.ProfileNoUI", true);
impCmd.Initialize(context);
impCmd.Update();
if (impCmd.Status == (int)CommandStatus.nrActiveCommand)
{
impCmd.Execute();
bool brefresh = (bool)context.Item("IManExt.Refresh");
if (brefresh == true)
{
//Succeeded in importing a document to WorkSite
IManDocument doc = (IManDocument)context.Item("ImportedDocument");
//Succeeded in filing the new folder under the folder.
Console.WriteLine("New document number, " + doc.Number + ", is successfully filed to " + fldr.Name + " folder.");
}
}
}
}
Je ne suis pas sûr si vous surveillez ce plus, mais j'espérais peut-être que vous pourriez me diriger vers où vous avez obtenu ce code? J'essaie d'interagir avec iManage/Worksite, mais je n'ai accès à aucune documentation à l'origine de certaines politiques d'entreprise agaçantes. – JamesMLV