未调用 Ashx 处理程序的 processrequest 函数
Ashx handler's processrequest function is not called
我正在编写一个处理程序来处理资源,当实现的 IHttpHandler Class 是在命名空间下编写时,我遇到了一个问题。
请找代码
不工作场景
Web.config:
<add name="ResourceHandler" type="PublicSite.Classes.Handlers.ResourceEndpoint, PublicSite" path="Resource.ashx" verb="*" />
属性: PublicSite.Classes.Handlers.ResourceEndpoint.IsReusable=False
问题:命中了构造函数,但未调用 ProcessRequest。构造 class 的对象,即 Constructor 被命中,但是在调用 processrequest 之前失败 404。
工作场景
Web.config:
<add name="ResourceHandler" type="ResourceEndpoint,PublicSite" path="Resource.ashx" verb="*" />
Class: PublicSite.Classes.Handlers.ResourceEndpoint.IsReusable=True
在调用 processrequest 之前构造函数被命中并失败 404。
第二次请求处理程序时,它直接使用构造的对象,因此不调用 constructr 并直接调用 ProcessRequest。顺便说一句,在第二次调用中,处理程序正在工作。
我不需要可重复使用的 属性。
有人可以帮我找到问题所在吗?谢谢
您能否向我确认您的 web.config 和处理程序本身如下所示? (这是来自 IIS 7.5 下托管的项目)
web.config:-
<system.webServer>
<handlers>
<add name="customerHandler"
preCondition="integratedMode"
verb="*"
path="customerHandler.ashx"
type="GlassCMS.HttpHandlers.CustomerHandler, GlassCMS"/>
.
.
.
</handlers>
</system.webServer>
HttpHandler: -
[WebService(Namespace = "http://{redacted.com}/json-http-handlers/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class CustomerHandler : IHttpHandler
{
public bool IsReusable
{
get { return false; }
}
public void ProcessRequest(HttpContext context)
{
string json = string.Empty;
// code to do whatever here...
context.Response.Write(json);
}
如果您愿意,我也可以包括 JavaScript(或者您可以在此处添加您的 post)。上面的这个例子来自工作代码。
我正在编写一个处理程序来处理资源,当实现的 IHttpHandler Class 是在命名空间下编写时,我遇到了一个问题。
请找代码
不工作场景
Web.config:
<add name="ResourceHandler" type="PublicSite.Classes.Handlers.ResourceEndpoint, PublicSite" path="Resource.ashx" verb="*" />
属性: PublicSite.Classes.Handlers.ResourceEndpoint.IsReusable=False
问题:命中了构造函数,但未调用 ProcessRequest。构造 class 的对象,即 Constructor 被命中,但是在调用 processrequest 之前失败 404。
工作场景
Web.config:
<add name="ResourceHandler" type="ResourceEndpoint,PublicSite" path="Resource.ashx" verb="*" />
Class: PublicSite.Classes.Handlers.ResourceEndpoint.IsReusable=True
在调用 processrequest 之前构造函数被命中并失败 404。
第二次请求处理程序时,它直接使用构造的对象,因此不调用 constructr 并直接调用 ProcessRequest。顺便说一句,在第二次调用中,处理程序正在工作。
我不需要可重复使用的 属性。 有人可以帮我找到问题所在吗?谢谢
您能否向我确认您的 web.config 和处理程序本身如下所示? (这是来自 IIS 7.5 下托管的项目)
web.config:-
<system.webServer>
<handlers>
<add name="customerHandler"
preCondition="integratedMode"
verb="*"
path="customerHandler.ashx"
type="GlassCMS.HttpHandlers.CustomerHandler, GlassCMS"/>
.
.
.
</handlers>
</system.webServer>
HttpHandler: -
[WebService(Namespace = "http://{redacted.com}/json-http-handlers/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class CustomerHandler : IHttpHandler
{
public bool IsReusable
{
get { return false; }
}
public void ProcessRequest(HttpContext context)
{
string json = string.Empty;
// code to do whatever here...
context.Response.Write(json);
}
如果您愿意,我也可以包括 JavaScript(或者您可以在此处添加您的 post)。上面的这个例子来自工作代码。