같은 클래스 이름을 가진 (그러나 다른 네임 스페이스에있는) 동일한 클래스 라이브러리에서 두 가지 복합 유형을 반환해야하는 webservice를 만들고 있습니다. 브라우저에서 TestService.asmx를 열면 예외가 발생합니다 (아래 참조). (과정의 클래스 이름을 변경 이외 : D)이 문제를 해결하는 방법이있다C# webservice의 반환 유형과 같은 이름의 다른 클래스 사용
내가
[WebMethod(MessageName="MyNamespace1.SomeClass")]
와 함께 내 방법을 장식 시도는
[return: XmlElement("SomeClass1", Namespace = "http://tempuri.org/NameSpace1")]
-
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
namespace MyWebservice
{
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
public class TestService : System.Web.Services.WebService
{
public MyNamespace1.SomeClass GetSomeClass1()
{
return new MyNamespace1.SomeClass() { Name = "SomeClass1" };
}
public MyNamespace2.SomeClass GetSomeClass2()
{
return new MyNamespace2.SomeClass() { Name = "SomeClass1" };
}
}
}
namespace MyNamespace1
{
public class SomeClass
{
public string Name { get; set; }
}
}
namespace MyNamespace2
{
public class SomeClass
{
public string Name { get; set; }
}
}
이 예외를 throw합니다.
[InvalidOperationException: Die Typen 'MyNamespace2.SomeClass' und 'MyNamespace1.SomeClass' verwenden den XML-Typnamen 'SomeClass' im Namespace 'http://tempuri.org/'. Geben Sie mit XML-Attributen einen eindeutigen XML-Namen und/oder Namespace für den Typ an.]
System.Xml.Serialization.XmlReflectionImporter.GetTypeMapping(String typeName, String ns, TypeDesc typeDesc, NameTable typeLib, Type type) +4071889
System.Xml.Serialization.XmlReflectionImporter.ImportStructLikeMapping(StructModel model, String ns, Boolean openModel, XmlAttributes a, RecursionLimiter limiter) +150
System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(TypeModel model, String ns, ImportContext context, String dataType, XmlAttributes a, Boolean repeats, Boolean openModel, RecursionLimiter limiter) +1604
현지화 오류 메시지 ... 무슨 재앙 – ANeves
무형 문화 유산 verstehe nicht!/ – Reniuz