【问题标题】:ASP.NET C# Service calling a service without initial .aspx definitionASP.NET C# 服务调用没有初始 .aspx 定义的服务
【发布时间】:2014-09-11 06:37:56
【问题描述】:

我正在尝试从另一个 Web 服务 (TotalCalories) 调用一个 Web 服务 (CalorieCount)。现在据我所知/可以发现,您必须在 .aspx 文件中定义 Web 服务。我的问题是我(还)没有,因为表单只会与第二个服务交互。

除此之外还有其他方法来定义服务吗?

总卡路里:

using ...

namespace Food_Calorie_Calculator
{

    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    //Allow web service to be called --->
    [System.Web.Script.Services.ScriptService]

    public class TotalCalories : System.Web.Services.WebService
    {

        [WebMethod]
        public Food CalorieTotal(List<Food> mixedList)
        {

            /* Count the total number of everything */
            foreach (var element in mixedList)
            {
                //Some Code
                aFood = CallCalorieCount(name,weight); <------- Error: namespace but used as var
            }

           //Some Code
            return totalFood;
        }

    }
}

【问题讨论】:

    标签: c# asp.net .net web-services asp.net-ajax


    【解决方案1】:

    我只是假设您在解决方案中添加的网络引用名为“CalorieCount”,因此您应该将其重命名 (CalorieCount.CalorieCount) 为您的引用名称。 你必须先创建一个 webservice 的实例,然后你才能调用它的方法。

    可能对于您的问题,只需在 TotalCalories 类中添加该方法就足够了。 此外,如果需要从另一个 Web 服务或站点调用 CalculateItem 方法,您可以将方法放在带有 [WebMethod] 的 TotalCalories 类中,否则我不会将其定义为服务的 Web 方法。

    public class TotalCalories : System.Web.Services.WebService
    {
    
        [WebMethod]
        public Food CalorieTotal(List<Food> mixedList)
        {
                ...
                aFood = CalculateItem(name, weight);
                ...
                return 
        }
    
        [WebMethod] //If needed to call outside of the webservice WebMethod, else just remove the attribute
        public Food CalculateItem(String name, Double weight)
        {
            ...
        }
    
    }
    

    这里是创建webservice实例并调用方法的代码

        CalorieCount.CalorieCount calorieCountService service = new CalorieCount.CalorieCount();
        aFood = calorieCountService.CalculateItem(name,weight);
    

    【讨论】:

    • 感谢您的贡献。我实际上在等待回复时发现了如何做到这一点。您介意我编辑您的评论以添加说明它如何与 AJAX/Java 脚本和 .aspx 文件交互吗?我不会删除你的解释,我只是在最后添加一点,以改善未来读者的解释。
    • 如果你也想将它用于 ajax,你应该将属性 [ScriptService] 添加到 webservice 类。例如[ScriptService] [WebService(Namespace = "tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] 公共类 MyService : System.Web.Services.WebService{ ... }跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-03
    • 2011-07-06
    • 2011-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多