ASP.NET C#Service调用没有初始.aspx定义的服务

时间:2014-09-11 06:37:57

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

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

有没有办法定义除此之外的服务?

TotalCalories:

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;
        }

    }
}

1 个答案:

答案 0 :(得分:1)

我只是假设你在解决方案中添加的网络参考被称为“CalorieCount”,因此你应该将它(CalorieCount.CalorieCount)重命名为你的推荐名称。 您必须首先创建Web服务的实例,然后您可以调用它的方法。

对于您的问题,仅在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);