【问题标题】:WebMethod works in Visual Studio but not on IIS7 (HTTP Status 500)WebMethod 适用于 Visual Studio,但不适用于 IIS7(HTTP 状态 500)
【发布时间】:2013-12-13 08:22:14
【问题描述】:

我有一个通过 Ajax 调用的 WebMethod。该代码在 Visual Studio 中完美运行,但是一旦我将其发布到 IIS7 并登录,我就会收到内部服务器错误(HTTP 状态 500)。

使用 Fiddler 我看到以下内容:

无法加载文件或程序集 'System.Web.Extensions, Version=4.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 或其之一 依赖关系。系统找不到指定的文件。

我想我可能需要 web.config 中的某些内容,但我不确定。

代码如下:

AJAX

function GetProgressStatus() {
        $.ajax({
            type: "POST",
            url: paths + '/webmethods.asmx/Gety',
            data: "{}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            processData: false,
            traditional: true,
            success: function (msg) {
                for (var i = 0; i < 13; i++) {
                    SetValueToBox(msg.d[i], i + 2);
                    SetNumberColor(i + 2);
                }
            }
        });

网络方法

[System.Web.Services.WebMethod(BufferResponse = false, EnableSession = true)]
    public object Gety()
    {

        if (HttpContext.Current.Session["LoggedInUserType"].ToString() == GlobalVaribles.UserLogged)
        {
            var viewUserDashboardCountsValueBussinessLogicLayer = new ViewUserDashboardCountsValueBLL();
            var userDashboardValues =
                 viewUserDashboardCountsValueBussinessLogicLayer.GetUserDashboardCountByUserId(Convert.ToInt64(HttpContext.Current.Session["CompanyID"]));
            return userDashboardValues;
        }
        else
        {
            var viewConsultantDashboardCountValueBussinessLogicLayer =
                new ViewConsultantDashboardCountValueBLL();
            var consultantDashboardValues =
                viewConsultantDashboardCountValueBussinessLogicLayer.GetConsultantDashboardCountByUserId(Convert.ToInt64(HttpContext.Current.Session["LoggedUserId"]));
            return consultantDashboardValues;
        }
    }

可能的修复:

我删除了可能存在问题的区域。我现在只需浏览我的网站,看看是否一切正常。

<add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

<httpModules>
  <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</httpModules>

【问题讨论】:

    标签: c# asp.net ajax webmethod


    【解决方案1】:

    在我看来,您的某些资源不可用,因此应将它们作为嵌入资源放置。在构建解决方案之前右键单击文件 -> 属性 -> 构建操作 -> 嵌入资源

    如果您的网络方法是静态的,则删除静态!

    【讨论】:

    猜你喜欢
    • 2013-04-30
    • 1970-01-01
    • 2021-02-25
    • 2020-06-13
    • 1970-01-01
    • 2011-09-27
    • 1970-01-01
    • 1970-01-01
    • 2015-11-23
    相关资源
    最近更新 更多