Я создал простой сервис для предоставления опций конфигурации в качестве словаря.Я создал новый класс SerializableDictionary, который реализует IXmlSerializable, как описано на этой доске.Когда я добавляю службу (через «Добавить ссылку на службу» в моем потребительском проекте), сигнатура метода показывает, что он возвращает DataSet.Когда я проверяю DataSet во время выполнения, он пуст.
Вот мой сервис:
[WebService(Namespace = "http://tempuri.org/")]
[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 AppSettingsService : System.Web.Services.WebService
{
[WebMethod]
public SerializableDictionary<string, string> ReadAppSettings()
{
return AppSettings.Settings; // Settings is a SerializableDictionary<string, string>
}
}
На стороне клиента я делаю это:
using Clients.AppSettingsServiceReference;
static AppSettings()
{
AppSettingsServiceSoapClient client = new AppSettingsServiceSoapClient();
var settings = client.ReadAppSettings();
// ...
}
Я ожидаю настройки быть SerializableDictionary, но это пустой DataSet.Я попытался отправить его в виде списка KeyValuePairs, как предлагается здесь и в других местах, но он также возвращает DataSet.Я использую C #, ASP.Net 3.5, VS2008 Pro. Я уверен, что пропускаю что-то простое, но не могу найти его.Может кто-нибудь показать мне, как это сделать?