У меня есть внешний вид контактов, который я хочу запустить из своего веб-приложения одним нажатием кнопки. Следующий код является мой класс длл и метод:Outlook Получить Контакты для веб-страницы - 0x800a139e - Ошибка выполнения JavaScript
public class AddressLookup
{
public Contact getContact()
{
RDOSession session = new RDOSession();
session.Logon(Type.Missing, Type.Missing, Type.Missing, true, Type.Missing, Type.Missing);
bool loggedOn = session.LoggedOn;
try
{
RDOAddressBook rAddressBook = session.AddressBook;
RDORecipients rContacts = rAddressBook.ShowAddressBook(Title: "Outlook Lookup", OneAddress: true);
RDORecipient rContact = rContacts.GetFirst();
RDOAddressEntry aeContact = rContact.AddressEntry;
return new Contact(aeContact.Name, aeContact.JobTitle, aeContact.CompanyName, aeContact.StreetAddress);
}
catch (Exception)
{
return new Contact("", "", "", "");
}
}
Следующий код, когда я бежал, когда кнопка нажата на веб-приложения:
protected void btnBillHeaderDetailsOutlook_Click(object sender, EventArgs e)
{
AddressLookup al = new AddressLookup();
var contact = al.getContact();
}
При открытии VS в первый раз, весь процесс выполняется так, как ожидалось, и контактная переменная возвращает правильные данные. Эта проблема возникает, когда я пытаюсь снова нажать кнопку или снова запустить все веб-приложение, когда процесс истечет.
Unhandled exception at line 885, column 13 in http://localhost:27855/ScriptResource.axd?d= ... 0x800a139e - JavaScript runtime error: Sys.WebForms.PageRequestManagerTimeoutException: The server request timed out.
Я чувствую, что у меня нет чего-то основного, поскольку мне еще предстоит сделать это раньше. Большое спасибо за помощь.
Когда я запускаю его как приложение окон нагрузки, как и ожидалось (если это поможет)
Outlook написан на C или C++, (afaik - единственное офисное приложение, которое полностью .Net/C#/Управляемый код - InfoPath), поэтому вы работаете с библиотекой unManaged с ресурсами, которые вам нужно явно Утилизировать или даже упростить перенос в операторе Using, поэтому попробуйте ... используя (сеанс RDOSession .... используя (RDOAddressBook rAddressBook ...) { –
@JeremyThompson благодарит, кажется, что этот объект не реализует IDisposable, поскольку для объекта RDOSession не существует метода dispose(). –