【问题标题】:asp.net 4 Webform application with custom urlrewrite fails on IIS 8具有自定义 url 重写的 asp.net 4 Web 窗体应用程序在 IIS 8 上失败
【发布时间】:2017-05-16 01:51:54
【问题描述】:

我们有一些带有自定义 UrlRewrite 的 ASP.NET 3.5 和 ASP.NET 4 网络表单网站,它们以编程方式将 SEO 友好的网址 (http://example.com/key/This-is-sample-text-in-url.html) 映射到物理地址 (http://example.com/key.aspx)

这些网站在 IIS 6 中完美运行,使用 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll for 3.5 和 c:\windows\microsoft.net\framework\v4.0.30319\aspnet_isapi.dll对于 4.0 在应用程序扩展映射窗口中。

迁移到 Windows 2012 后,所有 3.5 网站都使用经典的 .NET 3.5 AppPool 和处理程序部分中的此语句:

  <remove name="ASP.Net-ISAPI-Wildcard" />
  <add name="ASP.Net-ISAPI-Wildcard" path="*"
  verb="*" type="" modules="IsapiModule"
  scriptProcessor="C:\Windows\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll"
  resourceType="Unspecified"
  requireAccess="None"
  allowPathInfo="false"
  preCondition="classicMode,runtimeVersionv2.0,bitness64"
  responseBufferLimit="4194304" />

我希望使用相同的 Classic .NET 4.0 AppPool 和以下处理程序应该可以工作,但没有:

  <remove name="ASP.Net-ISAPI-Wildcard" />
  <add name="ASP.Net-ISAPI-Wildcard" path="*"
  verb="*" type="" modules="IsapiModule"
  scriptProcessor="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll"
  resourceType="Unspecified"
  requireAccess="None"
  allowPathInfo="false"
  preCondition="classicMode,runtimeVersionv4.0,bitness64"
  responseBufferLimit="4194304" />

我仍然收到 HTTP 错误 404.0 - 未找到
模块:IIS Web 核心
通知:MapRequestHandler
处理程序:静态文件
错误代码:0x80070002

我无法降级网站,也找不到任何有用的信息来查找错误来源。站点日志文件不提供任何详细信息,事件日志中没有错误。

我怀疑处理程序映射中可能存在冲突,并尝试通过 Web.Config 禁用不相关或可疑的条目,但没有任何变化。 我不知道,但也许 ASP.Net-ISAPI-Wildcard 无法捕获请求,最终处理以 StaticFile 处理程序结束,尽管在有序列表中,ASP.Net-ISAPI-Wildcard 位于顶部,StaticFile 是最后一个.

如果有人对此有解决方案,我将不胜感激。

附言在上面的示例中,目标页面有效,即 url 到 (http://example.com/key.aspx)

【问题讨论】:

    标签: webforms asp.net-4.0 iis-8.5 isapi-rewrite


    【解决方案1】:

    已解决

    这是以防万一有人遇到同样的情况

    我添加的处理程序是正确的,但仅适用于 64 位应用程序,所以当我添加 32 位版本的处理程序时问题解决了。由于我在配置管理器中设置了任何平台,我认为这可能不是平台问题。

      <remove name="ASP.Net-ISAPI-Wildcard" />
      <add name="ASP.Net-ISAPI-Wildcard" path="*"
      verb="*" type="" modules="IsapiModule"
      scriptProcessor="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll"
      resourceType="Unspecified"
      requireAccess="None"
      allowPathInfo="false"
      preCondition="classicMode,runtimeVersionv4.0,bitness64"
      responseBufferLimit="4194304" />
    
      <remove name="ASP.Net-ISAPI-Wildcard-32" />
      <add name="ASP.Net-ISAPI-Wildcard-32" path="*"
      verb="*" type="" modules="IsapiModule"
      scriptProcessor="C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll"
      resourceType="Unspecified"
      requireAccess="None"
      allowPathInfo="false"
      preCondition="classicMode,runtimeVersionv4.0,bitness32"
      responseBufferLimit="4194304" />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-26
      • 2015-06-29
      • 1970-01-01
      • 2011-03-05
      • 1970-01-01
      • 2015-08-01
      • 2013-02-17
      • 1970-01-01
      相关资源
      最近更新 更多