本人学C#不久,但由于公司需要,硬着脖子上了阵。WEB SERVICE都写好了,就是不知道怎么去用SOAP的方式调用,还请各位多朋友多多指教。用这样的方式(http://localhost/SyProducts/SyVPODProducts.asmx/getUserToken?DeviceID=1&SPID=1001&ServiceID=1000)的时候,报错;请求格式无法识别。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.InvalidOperationException: 请求格式无法识别。源错误: 执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。  堆栈跟踪: 
[InvalidOperationException: 请求格式无法识别。]
   System.Web.Services.Protocols.WebServiceHandlerFactory.CoreGetHandler(Type type, HttpContext context, HttpRequest request, HttpResponse response)
   System.Web.Services.Protocols.WebServiceHandlerFactory.GetHandler(HttpContext context, String verb, String url, String filePath)
   System.Web.HttpApplication.MapHttpHandler(HttpContext context, String requestType, String path, String pathTranslated, Boolean useAppConfig) +699
   System.Web.MapHandlerExecutionStep.System.Web.HttpApplication+IExecutionStep.Execute() +95
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +173 
愿与各位热心人士交个朋友,本人的QQ:71181397

解决方案 »

  1.   

    代码很长哦。
    不好贴啊其实我想了解的是如何做到用SOAP方式去请求/发送数据,您可以加我QQ吗,想向您请教.
    71181397
      

  2.   

    我写了一个短的。
    代码如下:
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Diagnostics;
    using System.Web;
    using System.Web.Services;namespace VPODServer
    {
    /// <summary>
    /// Service1 的摘要说明。
    /// </summary>
    public class Service1 : System.Web.Services.WebService
    {
    public Service1()
    {
    //CODEGEN: 该调用是 ASP.NET Web 服务设计器所必需的
    InitializeComponent();
    } #region 组件设计器生成的代码

    //Web 服务设计器所必需的
    private IContainer components = null;

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {
    } /// <summary>
    /// 清理所有正在使用的资源。
    /// </summary>
    protected override void Dispose( bool disposing )
    {
    if(disposing && components != null)
    {
    components.Dispose();
    }
    base.Dispose(disposing);
    }

    #endregion // WEB 服务示例
    // HelloWorld() 示例服务返回字符串 Hello World
    // 若要生成,请取消注释下列行,然后保存并生成项目
    // 若要测试此 Web 服务,请按 F5 键 [WebMethod]
    public string getUserName(string str)
    {
    return "Name"+str;
    }
    }
    }
    想通过:http://localhost/VPODServer/Service1.asmx/getUserName?str=lisl方式调用就报上面的错误。
    错误信息如下:
    请求格式无法识别。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.InvalidOperationException: 请求格式无法识别。源错误: 执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。  堆栈跟踪: 
    [InvalidOperationException: 请求格式无法识别。]
       System.Web.Services.Protocols.WebServiceHandlerFactory.CoreGetHandler(Type type, HttpContext context, HttpRequest request, HttpResponse response)
       System.Web.Services.Protocols.WebServiceHandlerFactory.GetHandler(HttpContext context, String verb, String url, String filePath)
       System.Web.HttpApplication.MapHttpHandler(HttpContext context, String requestType, String path, String pathTranslated, Boolean useAppConfig) +699
       System.Web.MapHandlerExecutionStep.System.Web.HttpApplication+IExecutionStep.Execute() +95
       System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +173 
    请问应该怎么样子用SOAP方式调用,谢谢。
      

  3.   

    不知道你怎么调用的
    但我以前的写法就跟平常代码一样
    Service1 s = new Service1();
    s.getUsername("XXX");
      

  4.   

    像你这样子是可以调用,但返回的格式不是soap的,我想得到一个XML文件,所以一直弄不好。