Используя Silverlight 3, Windows XP, IIS 5.1, я написал небольшое приложение, которое использует канальный метод вызова сервера, а не «ссылку на службу» в соответствии с этой статьей MSFT.
Приложение открывается и вызов сервера работает при запуске его на компьютере разработчика в VS 2008 с использованием адреса localhost плюс номер порта. Когда я изменяю адрес на имя компьютера dellnov2006 и публикую приложение в IIS, приложение открывается, но вызов веб-службы не работает.
Наблюдая за вызовом в Web Dev Helper, я вижу, что приложение пытается вызвать файл службы, http://dellnov2006/Service1.svc, и получает ошибку 404.
Пока у меня есть:
-В IIS сопоставлен тип .svc с aspnet-isapi.dll
-Запустите утилиту CleanIISScriptMaps
-Запустить aspnet_regiis.exe -i - включить
Буду признателен за любую помощь - у меня заканчиваются идеи по этому поводу.
-
Вот обратный вызов на сервер и содержимое файла Service1.svc:
private void Button_Click(object sender, RoutedEventArgs e)
{
// create a custom binding that uses HTTP and binary encoding
var elements = new List<BindingElement>();
elements.Add(new BinaryMessageEncodingBindingElement());
elements.Add(new HttpTransportBindingElement());
var binding = new CustomBinding(elements);
// create a channel factory for the service endpoint configured
// with custom binding
//var cf = new ChannelFactory<IService1>(binding,
// new EndpointAddress("http://localhost:1042/Service1.svc"));
var cf = new ChannelFactory<IService1>(binding,
new EndpointAddress("http://dellnov2006/Service1.svc"));
// save the syncronized context for the ui thread
uiThead = SynchronizationContext.Current;
// open the channel
IService1 channel = cf.CreateChannel();
// invoke the method asychrnoously
channel.BeginGetPerson(4, GetPersonCallback, channel);
}
Вот содержимое файла svc для того, что они стоят:
<%@ ServiceHost Language="C#" Debug="true" Service="SilverlightChannelApp1.Web.Service1" CodeBehind="Service1.svc.cs" %>
Большое спасибо
Майк Томас