locked
webservice 方法的schema 怎么设置? RRS feed

  • 问题

  • <?xml version="1.0" encoding="utf-8" ?>
      <string xmlns="http://tempuri.org/">Hello World</string>
    既这个方法返回结果的命名空间怎么设置?
    <wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://social.msdn.microsoft.com" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" targetNamespace="http://social.msdn.microsoft.com" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
    - <wsdl:types>
    - <s:schema elementFormDefault="qualified" targetNamespace="http://social.msdn.microsoft.com">
    - <s:element name="HelloWorld">
    这个schema 命名空间 又怎么设置?
    2010年7月23日 7:42

答案

  • 你好:

    你的意思是为WebService方法所返回的对象添加schema命名空间吗?

    [WebService(Namespace="urn:geometry")]
    public class Geometry {
      [WebMethod]
      public double Distance(Point orig, Point dest) {   
          return Math.Sqrt(Math.Pow(orig.x-dest.x, 2) + Math.Pow(orig.y-dest.y, 2)); 
      }
    }

    http://msdn.microsoft.com/en-us/magazine/cc164115.aspx
    http://www.svn8.com/dotnet/aspnet/2010031826704_8.html

    希望可以帮到你。

    • 已标记为答案 BoberSong 2010年7月29日 6:23
    2010年7月27日 6:15
  • 你好 如BoberSong版主所述,你只需要更改WebMethod的Attribute即可,比如:

    /// <summary>
        /// Summary description for TestWS
        /// </summary>
        [WebService(Namespace = "http://www.mywebservices.com/")]
        [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
        [System.ComponentModel.ToolboxItem(false)]
        // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
        // [System.Web.Script.Services.ScriptService]
        public class TestWS : System.Web.Services.WebService
        {

            [WebMethod]
            public string HelloWorld()
            {
                return "Hello World";
            }
        }

    那么返回结果将是

     <?xml version="1.0" encoding="utf-8" ?>

      <string xmlns="http://www.mywebservices.com/">Hello World</string>
    同时Web服务的描述也将随之更改,WSDL如下:
     <?xml version="1.0" encoding="utf-8" ?>
    - <wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://www.mywebservices.com/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" targetNamespace="http://www.mywebservices.com/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
    - <wsdl:types>
    - <s:schema elementFormDefault="qualified" targetNamespace="http://www.mywebservices.com/">
    - <s:element name="HelloWorld">
      <s:complexType />
      </s:element>
    - <s:element name="HelloWorldResponse">
    - <s:complexType>
    - <s:sequence>
      <s:element minOccurs="0" maxOccurs="1" name="HelloWorldResult" type="s:string" />
      </s:sequence>
      </s:complexType>
      </s:element>
      </s:schema>
      </wsdl:types>

    I see you~,.NET交流群71840452 微软中文论坛同城社区成都QQ群:74268428http://hi.baidu.com/1987raymondMy Blog~~~
    • 已标记为答案 BoberSong 2010年7月29日 6:23
    2010年7月28日 8:20

全部回复

  • 你好:

    你的意思是为WebService方法所返回的对象添加schema命名空间吗?

    [WebService(Namespace="urn:geometry")]
    public class Geometry {
      [WebMethod]
      public double Distance(Point orig, Point dest) {   
          return Math.Sqrt(Math.Pow(orig.x-dest.x, 2) + Math.Pow(orig.y-dest.y, 2)); 
      }
    }

    http://msdn.microsoft.com/en-us/magazine/cc164115.aspx
    http://www.svn8.com/dotnet/aspnet/2010031826704_8.html

    希望可以帮到你。

    • 已标记为答案 BoberSong 2010年7月29日 6:23
    2010年7月27日 6:15
  • 你好 如BoberSong版主所述,你只需要更改WebMethod的Attribute即可,比如:

    /// <summary>
        /// Summary description for TestWS
        /// </summary>
        [WebService(Namespace = "http://www.mywebservices.com/")]
        [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
        [System.ComponentModel.ToolboxItem(false)]
        // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
        // [System.Web.Script.Services.ScriptService]
        public class TestWS : System.Web.Services.WebService
        {

            [WebMethod]
            public string HelloWorld()
            {
                return "Hello World";
            }
        }

    那么返回结果将是

     <?xml version="1.0" encoding="utf-8" ?>

      <string xmlns="http://www.mywebservices.com/">Hello World</string>
    同时Web服务的描述也将随之更改,WSDL如下:
     <?xml version="1.0" encoding="utf-8" ?>
    - <wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://www.mywebservices.com/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" targetNamespace="http://www.mywebservices.com/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
    - <wsdl:types>
    - <s:schema elementFormDefault="qualified" targetNamespace="http://www.mywebservices.com/">
    - <s:element name="HelloWorld">
      <s:complexType />
      </s:element>
    - <s:element name="HelloWorldResponse">
    - <s:complexType>
    - <s:sequence>
      <s:element minOccurs="0" maxOccurs="1" name="HelloWorldResult" type="s:string" />
      </s:sequence>
      </s:complexType>
      </s:element>
      </s:schema>
      </wsdl:types>

    I see you~,.NET交流群71840452 微软中文论坛同城社区成都QQ群:74268428http://hi.baidu.com/1987raymondMy Blog~~~
    • 已标记为答案 BoberSong 2010年7月29日 6:23
    2010年7月28日 8:20