Я разрабатываю приложение Silverlight 3, которое я хочу подключить к веб-сервису с помощью предоставленного .dll или с помощью SOAP. Но .dll не подходит для Silverlight, поэтому я не могу этого сделать. И я не могу получить доступ к службе SOAP из-за междоменных проблем (я не размещаю ее, поэтому clientpolicy xml не подойдет).
Таким образом, мое решение заключается в том, чтобы включить .dll в веб-службу с поддержкой WCF в моем собственном домене и позволить приложению Silverlight вызывать веб-службу. Это работает.
Теперь к моей проблеме: клиент, предоставленный из .dll, на которую ссылается мой веб-сервис, имеет метод .Connect (), поэтому я должен сохранить состояние объекта. Но я могу сделать это? Наверное, нет, потому что Silverlight не поддерживает wsHttpBinding. Я знаю, что могу получить доступ к переменным ASP Session, но могу ли я сделать это вне браузера? Я могу найти только одно решение моей проблемы: сохранить имя пользователя / пароль в сеансе ASP и вызвать метод .Connect () в каждом методе. Но это действительно плохое решение.
Лучшие идеи?
Я не думаю, что дал понять, и извиняюсь за это. Мой английский правильно является основной причиной для этого.
У меня есть:
Приложение My Silverlight, которое работает на веб-сайте и вне браузера
Моя служба WCF, размещенная в том же домене.
междоменная веб-служба (не удается получить доступ к хранилищу файла междоменной политики)
Мой веб-сервис WCF обеспечивает слой между моим приложением и междоменным веб-сервисом, поскольку вы не можете добавлять междоменные веб-службы без файла политики.
Мой веб-сервис выглядит так (абстрактно):
class MyWebService
{
CrossDomainWebServiceClient client = new CrossDomainWebServiceClient();
public void Connect(string username, string password)
{
client.Connect(username, password);
}
public object Foo()
{
//GetEmployees() do only work if I'm connected
return client.GetEmployees();
}
}
Метод Foo () не работает, потому что это сеанс на вызов, а не сеанс на экземпляр. Я хочу, чтобы это сработало. Таким образом, объект клиента должен быть сохранен для следующего вызова. Session.required не работают в Silverlight, потому что wsHttpBinding явно не поддерживается.