我有一个Isapi dll执行一些基本的URL重写.它在II6上工作正常.但是,现在我的开发机器已升级到Windows 7,我无法在IIS 7下运行它
为了让它发挥作用,还有什么特别需要做的吗?
该网站正在运行经典ASP管道应用程序池(虽然我已尝试过两者)
关于如何解决这个问题的任何建议?
非常感谢
ps将其重写为模块/处理程序不是一种选择.我只想知道如何让现有的DLL在IIS 7上运行.
我在IIS6 Web服务器后面提供Django应用程序.
测试服务器运行完美,但是当在Web服务器后面运行模块导致导入时我收到此错误:
加载pyodbc模块时出错:DLL加载失败:找不到指定的模块
只是为了记录该模块是pyodbc
该网站使用isapi-wsgi通过isapi提供
有任何想法吗?这真的会让我的一天!:)
我正在使用SEO友好的URL,我可以通过将aspnet_isapi.dll映射到所有URL来处理大部分URL.(我在IIS中设置了一个处理程序映射,它将dll用于所有路径.(path =*))
但是,当"子文件夹"的最后一个字符是句点时,这似乎不起作用.例如,我有一个URL /brakes/A.B.S./,并且不会触发映射.所以我最终得到404这样的URL.有谁知道我应该如何设置映射来触发这个?(我已尝试*.但这也不起作用.)
我有一个使用ISAPI Rewrite的站点以及一个自定义的HttpModule,它们都进行了Url重定向和重写.
在IIS 6中,一切正常:首先运行ISAPI Rewrite过滤器,然后运行HttpModule.在IIS 7(集成模式)中,顺序现在是相反的,这会产生问题.
我的问题,特别是,HttpModule有一个条件,它会发出一个Url重写使用context.RewritePath.如果没有提供文档,它将显式地向路径添加"index.aspx",因此请求/test/被重写为/test/index.aspx.
在重写路径之后的某个时刻,执行ISAPI重写过滤器.我们有一个与模块相反的规则:/test/index.aspx获取301重定向的请求/test/.因此,我们有一个无限循环.
如何在IIS 7中确定HttpModules和ISAPI过滤器的执行顺序?订单可以更改吗?我发现了这个问题,但它并没有真正帮助.我不是IIS 7的主人,但我确实在某种程度上理解模块和ISAPI过滤器"一起"运行.不幸的是,他们的管理方式不同,我无法弄清楚如何强迫一个人跑到另一个人面前.救命!
注意:我们假设我无法更改现有代码.它在IIS 6中有效.我只想知道是否有办法使其在IIS 7集成模式下工作.
我正在将Delphi ISAPI dll转换为在IIS 7.0和7.5上更好地工作.ISAPI用于从注册表中读取其配置,但我想将其转换为使用同一文件夹中的web.config文件.
它适用于CGI,但ISAPI是另一回事.我正在使用GetModuleFileName模块的路径,当然,它正在给我回到IIS工作进程的路径(C:\ Windows\SysWOW64\inetsrv).
有没有办法获得ISAPI DLL本身的物理路径?
在IIS上运行ISAPI应用程序时,如果我们调用ParamStr(0)或Application.ExeName在ISAPI内部,我们将获得安装IIS的文件夹(C:\ windows ...).
有没有办法获取包含我的ISAPI而不是IIS的应用程序文件夹的文件夹路径?
kernelmode静态内容缓存是HTTP.SYS的一部分,配置起来非常简单.调试时,您始终可以使用以下命令检查kernelmode缓存的内容:
netsh http show cachestate
Run Code Online (Sandbox Code Playgroud)
但IIS中的用户模式缓存更难调试.似乎根本没有检查可能性.有没有一种简单的方法可以查看Web应用程序工作进程内的usermode缓存中的文件是什么?
在我们的项目中,我们有一个ISAPI模块,在将它们返回到浏览器之前对所请求的文件进行内省.因此,我们无法在IIS中使用标准的静态内容缓存.我们遇到缓存问题,IIS在短暂的预热期后停止向缓存添加新项目.项目被刷新,但似乎没有新文件被缓存.根据perfmon,缓存中的项目数量下降到少数.在任何给定时间能够准确查看缓存中的文件对我们来说非常有价值.
我遇到了在ISAPI过滤器中设置多个cookie的问题.我想将HttpOnly标志添加到所有cookie中.
所以,在我的第一次尝试中,我分割了cookie值并添加了HttpOnly标志,然后我将它们组合成一个字符串,最后调用pResponse->SetHeader(pfc, "Set-Cookie:", szNewValue),浏览器只获得第一个cookie值.
第一次尝试代码:
cbValue = sizeof(szValue) / sizeof(szValue[0]);
if (pResponse->GetHeader(pfc, "Set-Cookie:", szValue, &cbValue))
{
char szNewValue[MAX_URI_SIZE] = "";
char* token = NULL;
char* context = NULL;
char delim[] = ",";
// szValue format like
// "Language=en; expires=Sat, 15-Jul-2113 02:46:27 GMT; path=/; HttpOnly,Language=en; expires=Sat, 15-Jul-2113 02:46:27 GMT; path=/; HttpOnly"
// After first split
// token = "Language=en; expires=Sat"
// context = " 15-Jul-2113 02:46:27 GMT; path=/; HttpOnly,Language=en; expires=Sat, 15-Jul-2113 02:46:27 GMT; path=/; HttpOnly" …Run Code Online (Sandbox Code Playgroud) 如何通过请求msmdpump.dll连接到 SQL Server Analysis Services来解决此问题?我从 IsapiModule 收到 500 错误。
在装有 IIS 8.5 的 Windows Server 2012 R2 机器上,我msmdpump.dll使用以下说明设置了 OLAP 数据泵 ( ):https : //msdn.microsoft.com/en-us/library/gg492140.aspx#bkmk_copy
据我所知(并且我已经进行了两次和三次检查),一切都按照 MSDN 文章中的布局进行了配置。此外,与我进行此设置的另一台服务器(在不同的网络上)相比,它本质上是相同的。
当我http://localhost/OLAP/msmdpump.dll在该机器上的浏览器中请求时,收到 500 内部服务器错误。该错误表明它正在尝试使用OLAP我创建的处理程序。这与我在GET向 msmdpump.dll 发出请求时通常期望的错误不同。GET当一切正常时,对于一个直接的正常错误,会在一个 SOAP 信封中发回。就我而言,请求似乎从未被msmdpump.dll.
(完整截图见下文)
Module IsapiModule
Notification ExecuteRequestHandler
Handler OLAP
Error Code 0x8007007e
Requested URL http://localhost:80/OLAP/msmdpump.dll
Physical Path C:\inetpub\wwwroot\OLAP\msmdpump.dll
Logon …Run Code Online (Sandbox Code Playgroud) 场景:
使用Delphi XE编写的Delphi ISAPI dll,32位.
ISAPI DLL在Win 7 64企业桌面计算机上运行IIS 7.5.
DLL运行正常.
使用Run-> Attach to Process调试Delphi XE IDE中的ISAPI DLL:
启动ISAPI DLL并附加到调试器中的wpw3.exe*32进程 - 可以在ISAPI上下文中运行时跟踪和调试代码.
问题:
我的硬盘上周死了,我得到了一个新的Win 7安装 - 标准的企业级Win 7 64企业级映像(与我以前的Win 7 64安装不同).
现在,当我进入Run-> Attach to Process时,我不再按名称看到wpw3.exe*32进程,尽管它在任务管理器中按名称可见.在"附加到进程"对话框中调用"show system processes"选项没有帮助.
我现在看到的(我在旧部署中从未见过)是一个很长的"通用"系统进程列表,其中包含PID,但没有"系统"以外的描述.
其中一个进程是我的wpw3.exe*32进程,我已经使用MS的Process Explorer识别了它的PID.但是,如果我尝试附加到该进程,我会收到一条错误消息 - "无法创建进程 - 访问被拒绝" - 所以我无法调试.(相同的错误消息'错误打开过程,拒绝访问'也在Process Explorer中显示某些属性,尽管过程'wpw3.exe*32'的描述性名称在那里可见,与PID相关联.)
如何获取Run-> Attach to process对话框以显示正确的wpw3.exe*32进程名称并附加到它,以便我可以调试?
这是德尔福问题吗?一个IIS问题?ISAPI问题?这是一个问题 - 即缺乏描述性的过程名称和无法附加到过程是由同样的问题引起的; 或者是这两个问题:一个问题是缺乏描述性名称,另一个问题是无法附加到流程?
(不想使用 - 无法真正使用 - webApp调试器 - 这些是部署到生产的ISAPI dll,就像它们在IIS中编写和调试一样 - 我需要看到它们在IIS上下文中运行.)
多年来一直在调试ISAPI dll,使用不同版本的Delphi,在各种操作系统和服务器环境中没有任何问题 - 以前从未遇到过这个问题.我很难过.