我正在编写一个处理程序来处理资源,当实现的IHttpHandler类在命名空间下编写时,我遇到了一个问题。
请找到代码
不工作方案
网络配置:
<add name="ResourceHandler" type="PublicSite.Classes.Handlers.ResourceEndpoint, PublicSite" path="Resource.ashx" verb="*" />
属性: PublicSite.Classes.Handlers.ResourceEndpoint.IsReusable=False
问题:构造函数命中,并且未调用进程请求。构造类的对象,即构造函数被命中,但在调用进程请求之前由 404 失败。
工作场景
网络配置:
<add name="ResourceHandler" type="ResourceEndpoint,PublicSite" path="Resource.ashx" verb="*" />
等级: PublicSite.Classes.Handlers.ResourceEndpoint.IsReusable=True
在调用进程请求之前,构造函数被 404 命中并失败。
第二次,当我们请求处理程序时,它会立即使用构造的对象,因此不会调用 construcotor,而是直接调用 ProcessRequest。顺便说一下,在第二次调用中处理程序正在工作。
我不需要可重用的属性。有人可以帮我找到问题吗?谢谢。
你能向我确认你的 web.config 和处理程序本身如下所示吗?(这是来自 IIS 7.5 下托管的项目)
网络配置: -
<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(或者你可以在这里发布你的)。上面的这个例子来自工作代码。