【问题标题】:Generic handler not returning response on hosted environment通用处理程序未在托管环境中返回响应
【发布时间】:2019-09-28 12:46:30
【问题描述】:

通用处理程序在托管环境中不返回响应

我正在尝试托管使用 ASP.NET 构建的应用程序。它有一个简单的 html 文件调用 javascript,其中我有一个 ajax 调用请求来自通用处理程序(.ashx)的响应。该应用程序在我的本地运行良好,但在托管环境中无法运行。

当我在托管网站上调试 javascript 时,它返回的响应是

" \r\n" in ajax 成功数据元素。

我是这个主机的新手,我不确定我的 ajax 请求是错误的还是发布的错误。我只是在 Visual Studio 上使用了简单的发布选项并将所有文件发布到托管环境。

这是我的 ajax 请求:

            $.ajax({
                type: "GET",
                url: "/Handlers/GetInfo.ashx",
                contentType: "application/json; character=utf-8",
                success: function (data) {
                    if (data.status == "OK") {
                     //some code here

                    }
                }
            });

这是我的处理程序:

GetInfo.ashx.cs

public class GetInfo: IHttpHandler
{

    public void ProcessRequest(HttpContext context)
    {
       context.Response.Write(JsonConvert.SerializeObject (new { status = "OK" }));   

    }

}

【问题讨论】:

  • 如果你给 ProcessRequest 添加一个断点,它会停在那里吗?
  • 在本地?是的。我也得到了 data.status = OK 的响应。
  • 托管是指 Azure 吗?那是因为 .ashx 没有被映射到 web.config 文件上的通用处理程序。
  • 我将它托管在第三方托管服务器上,并且我使用的数据库是天蓝色的。但是,我一直在阅读有关 .ashx 应该添加到 web.config 文件的信息,但找不到如何去做。你能给我一个关于如何添加它的链接吗?为什么它在本地工作?无需将 .ashx 添加到 web.conifg。
  • 因为在本地你的全局配置文件 machine.config 中有它。见stackoverflow.com/questions/24056966/…

标签: javascript c# generic-handler


【解决方案1】:

确保你的 web.config 文件中有这个(本地它应该在全局 web.config 中):

<system.web>
  <httpHandlers>
    <add path="*.ashx" verb="*" type="System.Web.UI.SimpleHandlerFactory, System.Web" validate="True"/>
  </httpHandlers>
</system.web>

【讨论】:

  • 谢谢!它仍然没有工作。我尝试在 web.config 的 标记内外添加此标记。我需要任何图书馆参考吗?
  • 它应该在 内,是的。这种类型属于标准 System.Web.dll,所以你应该不需要任何东西。
  • 还是不行。我尝试了许多选项,例如此处指定的选项link。甚至为每个处理程序添加了自定义处理程序,我还尝试将代码放在逻辑后面的标记直接中,如我提到的链接中所示。没用。
猜你喜欢
  • 2018-07-30
  • 1970-01-01
  • 2018-09-21
  • 1970-01-01
  • 1970-01-01
  • 2016-12-22
  • 1970-01-01
  • 1970-01-01
  • 2019-10-25
相关资源
最近更新 更多