我已经建立了一个网络应用程序,使用救赎来读取邮箱,让我们称之为"custom@domain.com“。使用localhost可以很好地工作,但是当我部署它时,就会得到这个异常。
Error System.Runtime.InteropServices.COMException (0x80004005):使用CLSID (29AB7A12-B531-450E-8F7A-EA94C2F3C05F}从IClassFactory创建COM组件的实例,但由于以下错误而失败: 80004005。在System.RuntimeTypeHandle.CreateInstance(RuntimeType类型下,布尔型publicOnly、布尔型noCheck、布尔& canBeCached、RuntimeMethodHandleInternal& ctor、布尔&bNeedSecurityCheck在System.RuntimeType.CreateInstanceSlow(布尔型publicOnly、布尔型skipCheckThis、布尔fillCache)的System.Activator.CreateInstance(类型类型,布尔nonPublic)
上的布尔skipVisibilityChecks、布尔skipCheckThis、布尔fillCache)。
--我猜我的服务器正在使用它的网络用户作为默认用户登录邮箱,而不是当前访问web应用程序的windows用户。如何让服务器或RDO代码使用RDO应用程序使用当前的NT用户?
我已经在我的服务器上安装了MAPI扩展,并在注册表中注册了dll。
我的RDO代码如下所示
RDOSession Session = null;
rdoDefaultFolders olFolderInbox = rdoDefaultFolders.olFolderInbox;
Session = new RDOSession();//this throws the exception above
Session.LogonExchangeMailbox("username@domain.com", outLookServer);
objFolder = Session.GetDefaultFolder(olFolderInbox);发布于 2012-02-03 00:21:49
,噩梦(或者不是推荐的)解决方案,,我认为问题在于应用程序的苦涩,正如Dmitry所指出的。然而,将应用程序转换为32位或64位的问题是不可避免的和可怕的连锁反应:将解决方案中的每个项目转换为使用相同的bitness,以便应用程序可以使用相同位的MAPI。如果您有其他使用相同库和项目的应用程序,那么这些应用程序也可能会中断,所以说起来容易做起来难。事实上,我试过了,它在这么多的ways...decided中破坏了这个项目,这是不值得的。
最佳解决方案
对于Exchange 2007_SP1和更高版本,我们有一个名为Exchange的方便的WebService,它与Redemption...maybe做同样的事情,但它可以满足您的日常展望需求。请阅读下载中的指南以获得更好的信息。
http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=13480
这对我来说是最好的解决方案,因为它不需要任何应用程序来指定位,它不需要任何特殊的指令,也没有任何松散的结尾。一个简单的DLL,完全可以通过身份验证甚至模拟来完成您的需要。谁不喜欢网络服务呢?
示例代码
using ExWs = Microsoft.Exchange.WebServices.Data;
ExWs.ExchangeService service = new
ExWs.ExchangeService(ExWs.ExchangeVersion.Exchange2007_SP1);
service.Credentials = new
ExWs.WebCredentials("username", "password", "domain");
service.AutodiscoverUrl("name@company.com");教程,,再次阅读指南或谷歌它。
其他示例http://omegacoder.com/?p=454
Download attachment from Exchange using Exchange Web Services
https://stackoverflow.com/questions/9103239
复制相似问题