首先,当我进行测试时,它在Visual Studio 2010中运行良好。
但我尝试使用以下4个版本在64位Windows 7上发布到IIS7,但仍然无效:
1.Visual Studio 2010 Publish - >构建 - >一般 - >平台目标:任何CPU
1-A:IIS7:ASP.Net v4.0,启用32位应用程序= False
Error:
Server Error in '/TestDll' Application.
--------------------------------------------------------------------------------
An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)
1-B:IIS7:ASP.Net v4.0,启用32位应用程序= True
它根本没有加载,“Internet Explorer无法显示网页”,应用程序日志出现应用程序错误....
2-A:IIS7:ASP.Net v4.0,启用32位应用程序= False
Could not load file or assembly 'WebApplicationTest' or one of its dependencies. An attempt was made to load a program with an incorrect format.
程序集加载跟踪:以下信息有助于确定无法加载程序集“WebApplicationTest”的原因。
=== Pre-bind state information ===
LOG: User = IIS APPPOOL\ASP.NET v4.0
LOG: DisplayName = WebApplicationTest
(Partial)
WRN: Partial binding information was supplied for an assembly:
WRN: Assembly Name: WebApplicationTest | Domain ID: 7
WRN: A partial bind occurs when only part of the assembly display name is provided.
WRN: This might result in the binder loading an incorrect assembly.
WRN: It is recommended to provide a fully specified textual identity for the assembly,
WRN: that consists of the simple name, version, culture, and public key token.
WRN: See whitepaper http://go.microsoft.com/fwlink/?LinkId=109270 for more information and common solutions to this issue.
LOG: Appbase = file:///C:/inetpub/wwwroot/TestDll/
LOG: Initial PrivatePath = C:\inetpub\wwwroot\TestDll\bin
Calling assembly : (Unknown).
2-B:IIS7:ASP.Net v4.0,启用32位应用程序= True
根本不再加载。
嗯..从我研究的是,唯一的办法是强制IIS7在32位进程中运行ASP.NET ...但它似乎不起作用,我想知道我做错了什么...提前致谢...
答案 0 :(得分:2)
似乎正在发生的事情是,当您切换到32位时,您无法找到某些其他依赖项的32位版本。它似乎找到了其他依赖项的64位版本。
如果您可以安排所有的DLL和程序集都是32位,那么您尝试的应该可以正常工作。
另一种选择是使用FreePascal构建64位DLL。如果接口是普通的旧函数,这可能会起作用,但我不确定FreePascal是否可以执行COM。
另一种方法是避免Delphi altogther并使用支持64位的工具,例如Visual Studio。