无法加载文件或程序集“Oracle.DataAccess”

时间:2010-07-09 02:23:57

标签: c# asp.net sharepoint

我有一台Windows Server 2008 x64计算机,并使用ODAC 11g客户端成功将简单的ASP.NET / C#应用程序连接到Oracle数据库。我的下一步是将相同的oracle连接添加到SharePoint Web部件(在同一台计算机上开发)。 SharePoint Server,Web Server等也都位于同一台计算机上。我想我可以将Oracle.DataAccess引用添加到我的SharePoint Web部件,添加oracle连接代码,并完成...但是现在哦...我通过浏览器加载我的Web部件时出现以下错误oracle连接:

[BadImageFormatException:无法加载文件或程序集'Oracle.DataAccess,Version = 2.112.1.1,Culture = neutral,PublicKeyToken = 89b483f429c47342'或其依赖项之一。试图加载格式不正确的程序。]

有人可以帮我调试吗?我在GAC中使用正确的版本进行组装。出于某种原因它没有看到它?我很困惑为什么一个简单的ASP.NET / C#应用程序可以正常工作,但现在它在SharePoint上它不起作用。有什么想法吗?

SPECFIC ERROR:

[TargetInvocationException:调用目标抛出了异常。]   在System.RuntimeTypeHandle.CreateInstance(RuntimeType类型,Boolean publicOnly,Boolean noCheck,Boolean& canBeCached,RuntimeMethodHandle& ctor,Boolean& bNeedSecurityCheck)   在System.RuntimeType.CreateInstanceSlow(Boolean publicOnly,Boolean fillCache)   在System.RuntimeType.CreateInstanceImpl(Boolean publicOnly,Boolean skipVisibilityChecks,Boolean fillCache)   在System.Activator.CreateInstance(Type type,Boolean nonPublic)   在Microsoft.SharePoint.WebPartPages.SPWebPartReflectionHelper.GetDefaultControl(类型controlType)   在Microsoft.SharePoint.WebPartPages.BinaryWebPartDeserializer.LoadInitialWebPart()   在Microsoft.SharePoint.WebPartPages.BinaryWebPartDeserializer.Deserialize()   在Microsoft.SharePoint.WebPartPages.SPWebPartManager.CreateWebPartsFromRowSetData(Boolean onlyInitializeClosedWebParts)

[BadImageFormatException:无法加载文件或程序集'Oracle.DataAccess,Version = 2.112.1.1,Culture = neutral,PublicKeyToken = 89b483f429c47342'或其依赖项之一。试图加载格式不正确的程序。]   在PortalOBIEEReportList.OBIEEReportList.OBIEEReportList..ctor()

2 个答案:

答案 0 :(得分:1)

您可能需要在SharePoint应用程序的Web.Config文件中输入oracle Data Access dll的安全控制设置。 “安全控制”设置显式标识SharePoint运行时允许加载的DLL。

格式为

<SafeControl Assembly="DLLName, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
    Namespace="DLLNameSpace" 
    TypeName="*" 
    Safe="True" 
    AllowRemoteDesigner="True" />

Information添加SafeControl。

我用来帮助确定程序集名称的工具是.NET Reflector

答案 1 :(得分:0)

构建平台目标必须是“任何CPU”或x64。