【问题标题】:Asp .asmx Web service work on server but not at Client browserAsp .asmx Web 服务在服务器上工作,但在客户端浏览器上不工作
【发布时间】:2019-07-22 00:43:29
【问题描述】:

我在 Asp 中使用 Web 方法将事件加载到完整日历。它在代码(本地)和服务器 IIS 版本上工作正常。 10. 但是当我从未加载的浏览器事件打开应用程序并且我在(检查模式)POST 内部服务器错误 500 中收到消息。我尝试从浏览器调用 asmx 页面并且它工作但我没有像在服务器上那样调用的选项。

我检查了服务器上的文件夹权限,看起来不错

    $(document).ready(function () {
    var events = [];
    var ostalo = [];
    var userrola ="<%=Session["Rola"].ToString()%>";
    var userid ="<%=Session["userId"].ToString()%>";
    $.ajax({
        type: "POST",
        url: 'taskovi.asmx/UzmiTaskove',


        dataType: "json",
        success: function (result) {

            if (userrola== "Administrator") {
                $.each(result, function (i, data) {
                    events.push(
                        {
                            ID: data.ID,
                            title: data.title,
                            start: data.Start,
                            end: data.End,
                            backgroundColor: "rgba(51, 121, 183, 1)",
                            borderColor: "orange",
                            textColor: "white",
                            allDay: true

                        });
                });
            } ..etc...

          AND WEB METHOD

         [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public void UzmiTaskove()
    {
        List<events> listaTaskova = new List<events>();
        string CS = Properties.Settings.Default.conn.ToString();
        using (SqlConnection con = new SqlConnection(CS))
        {
            SqlCommand cmd = new SqlCommand("UzmiTaskoveSve", con);
            cmd.CommandType = CommandType.StoredProcedure;
            con.Open();
            SqlDataReader rdr = cmd.ExecuteReader();
            while (rdr.Read())
            {
                events tas = new events();
                tas.ID = rdr["ID"].ToString();
                // tas.IdProjekta = Convert.ToInt32(rdr["IdProjekta"]);
                tas.title = rdr["Opis"].ToString();
                tas.Start = rdr["DatumPocetka"].ToString();
                tas.End = rdr["DatumZavrsetka"].ToString();
                tas.IdZap = Int32.Parse(rdr["IdZap"].ToString());
                //tas.Status = rdr["Status"].ToString();
                //tas.BrojSati = rdr["BrojSati"].ToString();
                //tas.Dokumenta = rdr["Dokumenta"].ToString();
                listaTaskova.Add(tas);
            }
        }
        JavaScriptSerializer js = new JavaScriptSerializer();
        Context.Response.Write(js.Serialize(listaTaskova));
    }

为什么 asmx 可以在服务器和 localhost 上工作,但不能在 Web 浏览器上工作?

【问题讨论】:

  • 我从来没有用过Context.Response.Write(js.Serialize(listaTaskova));,所以我不确定,但你能不能只返回一个字符串,看看它是否有效?
  • 此外,asmx 响应在包装器中返回,获取数据的方式不仅仅是result,而是result.d。更多可能的帮助:stackoverflow.com/questions/8550530/….

标签: asp.net iis asmx


【解决方案1】:

asmx 响应在包装对象中返回,始终称为d,访问数据的方式不仅仅是result,而是result.d

这里有更多可能的帮助:Response.Write() in WebService

【讨论】:

  • 感谢您的回答...数据没有问题...在服务器上一切正常...但是当您从浏览器打开应用程序时...就像您在浏览器上键入服务器的网址一样...和应用程序打开...在这种情况下,我有错误 POST internal server error 500 ...这是服务器客户端和 asmx web 方法之间的一些想法
  • 我明白了。我认为没有人能从迄今为止发布的内容中说出答案。有关该错误的更多详细信息可能会有所帮助。
猜你喜欢
  • 2015-12-04
  • 1970-01-01
  • 1970-01-01
  • 2019-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-10
  • 2017-05-21
相关资源
最近更新 更多