如何让一个简单的c#web服务返回<;?xml版本=";1.0“;编码=";utf-16“&燃气轮机;头球?

如何让一个简单的c#web服务返回<;?xml版本=";1.0“;编码=";utf-16“&燃气轮机;头球?,c#,web-services,utf-8,asmx,utf-16,C#,Web Services,Utf 8,Asmx,Utf 16,我编写了一个返回XML文档的非常简单的web服务 该文档的标题当前为 我希望它返回 如何更改.asmx或.cs文件中的默认输出编码 smo.asmx <%@ WebService Language="C#" Class="smo" %> smo.asmx using <blah> [WebService(Namespace="http://www.bl.uk/webservices/")] public class smo : WebService { [

我编写了一个返回XML文档的非常简单的web服务

该文档的标题当前为

我希望它返回

如何更改.asmx或.cs文件中的默认输出编码

smo.asmx
<%@ WebService Language="C#" Class="smo" %>


smo.asmx
using <blah>

[WebService(Namespace="http://www.bl.uk/webservices/")]
public class smo : WebService
{
    [XmlRoot(ElementName = "SQLServer")]
    public class CDatabaseBackup
{
    public string ServerName;
    public string DatabaseCount;
     }

//
// Generic SMO query processor
//
[WebMethod(Description = "WMIClassProperty: ", EnableSession = false, CacheDuration=60)]

public CDatabaseBackup smoDatabaseBackupStatus(string SQLServerName)
{
    CDatabaseBackup result = new CDatabaseBackup();
    Server svr;
              <blah>
              return result;
      }


您可以在web.config的全球化部分将web服务配置为处理UTF-16而不是UTF-8。全球化标记的requestEncoding和responseEncoding属性应设置为UTF-16

<globalization requestEncoding="utf-8" responseEncoding="utf-8"/>

必须转换为

<globalization requestEncoding="utf-16" responseEncoding="utf-16"/>


此更改将允许web服务输出UTF-16,但也将要求客户端在UTF-16中发出请求。

您可以在web.config的全球化部分中配置web服务以处理UTF-16而不是UTF-8。全球化标记的requestEncoding和responseEncoding属性应设置为UTF-16

<globalization requestEncoding="utf-8" responseEncoding="utf-8"/>

必须转换为

<globalization requestEncoding="utf-16" responseEncoding="utf-16"/>


此更改将允许web服务输出UTF-16,但它也将要求客户端在UTF-16中发出请求。

如果我欺骗并取消注释第二个“set”语句以将UTF-8替换为UTF-16,则存储过程将工作。。。我不想作弊,我对把这件事做好很感兴趣。(好吧,比我通常使用的黑客和粘贴更正确:)我不太明白你在做什么。您是如何创建XML的?您必须以预期的编码返回XML。XML是通过返回类创建的,在本例中,是从我调用的方法返回CDATA BaseBackup。它会自动序列化为XML文档。看起来C#框架会自动创建东西,但在我的环境中它使用UTF-8。我认为这是同一个问题。。。如果我欺骗并取消注释第二个“set”语句以将UTF-8替换为UTF-16,则存储过程可以工作。。。我不想作弊,我对把这件事做好很感兴趣。(好吧,比我通常使用的黑客和粘贴更正确:)我不太明白你在做什么。您是如何创建XML的?您必须以预期的编码返回XML。XML是通过返回类创建的,在本例中,是从我调用的方法返回CDATA BaseBackup。它会自动序列化为XML文档。看起来C#框架会自动创建东西,但在我的环境中它使用UTF-8。我认为这是同一个问题。。。谢谢,我会调查的。我将不得不取消我的黑客,看看这是否有效!!谢谢,我会调查的。我将不得不取消我的黑客,看看这是否有效!!