通用处理程序

时间:2015-05-07 17:20:39

标签: asp.net-mvc

为了将枚举器呈现给客户端,我在.ashx文件中使用以下代码:

<%@ WebHandler Language="C#" Class="Common" %>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Xeleton.ModuleAccount.Core;
using Xeleton.ModuleBase.Core;

public class Common : IHttpHandler
{

    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/javascript";
        context.Response.Write(SharedFunctionality.SerializeEnumerator<AccountType>());
    }

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
}

这会产生以下输出:

AccountType={"Local":0,"Google":1,"Facebook":2,"Twitter":3};
所有脚本和样式都捆绑在网站上,所以我在BundleConfig中提供了这个文件:

public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new ScriptBundle("~/Scripts").Include("~/Services/Common.ashx"));
}

一切正常,网站正常运行。

当我将此应用程序部署到服务器时,我在firebug控制台中收到以下错误:

enter image description here

所以我认为bundle逻辑正在读取文件而不是执行和读取输出。我在发布模式下构建我的开发机器,但不会发生错误。服务器是2012R2使用IIS8.5

1 个答案:

答案 0 :(得分:0)

您使用捆绑包将javascript或css文件捆绑在一起而不是ashx文件。

来自BundleConfig.cs的

片段

public static void RegisterBundles(BundleCollection bundles)
{
    bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                    "~/Scripts/jquery-{version}.js"));
}

然后在你的cshtml文件中引用你的包,将你的javascript文件包含在生成的html中。

@Scripts.Render("~/bundles/jquery")