自定义Http处理程序IIS7和ASP.NET

时间:2009-08-13 16:09:42

标签: asp.net iis-7

我们在web.config中指定了一些HTTP处理程序。当我们通过网站项目运行这个网站时,一切正常。但由于某种原因,在将其移植到WAP项目并指向.NET 3.5框架之后,当我在开发框中的IIS 7中启动网站时,处理程序无法正常工作。除了我的web.config中已存在的指定自定义处理程序之外,我是否需要在IIS7中执行一些特殊操作?

当我在IIS 7中查看我们网站的Handler Mappings部分时,我确实看到了使用我们的自定义扩展列出的3个处理程序。所以看起来它正在拾取我们在web.config中指定的处理程序。但是我知道在非WAP网站上工作的处理程序不能在这个WAP项目中工作,我不知道为什么。

例如,当我们的一个处理程序在引用时尝试启动时,我得到:

'/'应用程序中的服务器错误。 分析器错误 说明:解析为此请求提供服务所需的资源时发生错误。请查看以下特定的解析错误详细信息并适当修改源文件。

Parser Error Message: Could not create type 'jaxHandler'.

Source Error:

Line 1:  
Line 2:  
Line 3:  using System;


Source File: /jaxHandler.ashx    Line: 1

Version Information: Microsoft .NET Framework Version:2.0.50727.3074; ASP.NET Version:2.0.50727.3074 

此外,当我尝试点击我们网站上的.customextension上的超链接时,处理程序似乎没有拿起它。

所以当我点击超链接时,我得到:

HTTP Error 404.0 - Not Found
The resource you are looking for has been removed, had its name changed, or is temporarily unavailable. Detailed Error InformationModule IIS Web Core 
Notification MapRequestHandler 
Handler StaticFile 
Error Code 0x80070002 
Requested URL http://sss:80/somename.prod
Physical Path C:\www\sss\somename.prod 
Logon Method Anonymous 
Logon User Anonymous 
在上面的案例中,

(我用'somename'替换了真实文本,用'sss'替换了我们的公司名称)。

如果我查看IIS7中的Http Handlers部分,我确实看到* .prod已注册。以下是我们如何在自定义部分下的web.config中设置它:

<add name="sss" path="*.prod" verb="*" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" resourceType="Unspecified" preCondition="bitness32"/>

2 个答案:

答案 0 :(得分:25)

对于在IIS7上运行的ASP.NET应用程序,应将HttpHandlers映射到web.config的<system.webServer>部分。在IIS6中,它们映射在<system.web>部分。

<system.webServer>
    <handlers>
        <add name="HandlerName" 
             path="HandlerPath" verb="*" type="Handler.Type"
             resourceType="Unspecified" />
    </handlers>
</system.webServer>

答案 1 :(得分:0)

您需要做的就是构建代码。

您需要将所有C#代码复制到.ashx.cs文件中。实际上,我建议您创建一个新的.ashx并将C#代码复制到其.ashx.cs文件中。

网站动态构建。与Visual Studio中的其他类似项目类型一样,Web应用程序项目需要在源文件中包含代码,并将代码构建到程序集中。