我有一个在IIS 6上运行的应用程序。所有请求都通过aspnet_isapi.dll。这是通过通配符应用程序映射(未验证文件存在)实现的。
我已将所述应用程序复制到运行IIS7的计算机上,并希望再次使用它。
在应用程序中,任何扩展名为.aspx(或.ashx)的请求都会以正常方式处理。具有不同扩展名的其他请求(例如.html和.xml)由自定义http模块处理。有些请求没有扩展名,并且动态地重定向到带扩展名的文件(例如,访问... / item / 1可能会重定向到... / item / 1.html或... / item / 1.xml,具体取决于accept头中的值)。
新位置可能不存在,但动态生成响应。
目前,应用程序池处于“经典”模式,并且正在使用.NET v4.0(之前使用的是.NET 3.5,但这似乎与问题无关)。自定义http模块仅在web.config中设置。
重定向(从... / item / 1到... / item / 1.html)似乎有效,这表明应用程序确实正在处理扩展较少的请求(该重定向是在应用程序本身中写入的)。我认为这意味着自定义模块正在运行。
但是扩展请求(.html,.xml等)失败了。我得到的错误是:
HTTP Error 404.0 - Not Found
The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.
Module: IIS Web Core
Notification: MapRequestHandler
Handler: StaticFile
Error Code: 0x80070002
我试过了: 添加映射*到aspnet_isapi.dll的通配符脚本映射 尝试将* .html的特定映射添加到aspnet_isapi.dll
这些仍会导致相同的错误消息,并且似乎仍然会转到处理程序“StaticFile”。
我尝试修改“StaticFile”以便它使用aspnet_isapi.dll可执行文件,这会导致新的错误:
HTTP Error 404.4 - Not Found
The resource you are looking for does not have a handler associated with it.
Handler: Not yet determined
非常感谢任何帮助。
答案 0 :(得分:10)
以集成模式设置应用程序池,并设置所有请求都运行所有托管模块
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
...
</modules>
...
</system.webServer>
答案 1 :(得分:0)
在服务配置中使用此配置,它对我有用。
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<services>
<service name="WcfService.Service1">
<endpoint address=""
binding="basicHttpBinding"
bindingConfiguration="secureHttpBinding"
contract="WcfService.IService1"/>
<endpoint address="mex"
binding="mexHttpsBinding"
contract="IMetadataExchange" />
</service>
</services>
<bindings>
<basicHttpBinding>
<binding name="secureHttpBinding">
<security mode="Transport">
<transport clientCredentialType="None"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
<serviceMetadata httpsGetEnabled="true"/>
<!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>