Я пытаюсь получить доступ к службе WCF, размещенной в службе Windows с помощью устройства Android. Я прошел через xamarin tutorial для использования службы WCF, размещенной в IIS, и через tutorial для размещения WCF с сервисом Windows и доступа к нему с помощью консольного приложения.
До сих пор я пытался пересечь эти два решения, но ничего не получилось. Все, что я могу сделать, это то, что поймал FileNotFoundException
, заявив, что пропустил ServiceReferences.ClientConfig
в каталоге /
. Поэтому я попытался вставить этот файл (который был создан SLsvcUtil), но ничего не получилось.
Каждый раз, когда я звоню Open
, или AddAsync
или что-то, я получаю ReferenceNullException.
Итак, как правильно подключиться к сервису WCF с WindowsService с помощью мобильного устройства?Доступ к сервису WCF, размещенному в службе Windows с мобильным устройством
0
A
ответ
0
Хорошо, я получил его на работу:
я снова работал себя через учебник по CodeProject. После этого я создал дополнительный проект Android и добавил класс poxy. Поскольку я не смог использовать файл App.Config, я определил привязку в коде. Методы асинхронные потерпят неудачу по какой-то причине, но упаковка их в Task.Run и ожидая, что просто работает отлично, а также:
void InitializeServiceConnection()
{
EndpointAddress ea = new EndpointAddress("http://x.x.x.x:9001/CalcService");
BasicHttpBinding bhttpb = new BasicHttpBinding()
{
Security = new BasicHttpSecurity()
{
Mode = BasicHttpSecurityMode.None,
Transport = new HttpTransportSecurity()
{
ProxyCredentialType = HttpProxyCredentialType.None,
ClientCredentialType = HttpClientCredentialType.None
}
},
BypassProxyOnLocal = true
};
objCalcClient2 = new CalcServiceClient(bhttpb, ea);
}
async void DoStuff()
{
dblResult = await Task.Run<double>(delegate { return objCalcClient2.Add(dblX, dblY); });
WriteLine(string.Format("Calling Add >> X : {0:F2} Y : {1:F2} Result : {2:F2}", dblX, dblY, dblResult));
dblResult = await Task.Run<double>(() => { return objCalcClient2.Subtract(dblX, dblY); });
WriteLine(string.Format("Calling Sub >> X : {0:F2} Y : {1:F2} Result : {2:F2}", dblX, dblY, dblResult));
dblResult = await Task.Run<double>(() => { return objCalcClient2.Multiply(dblX, dblY); });
WriteLine(string.Format("Calling Mul >> X : {0:F2} Y : {1:F2} Result : {2:F2}", dblX, dblY, dblResult));
dblResult = await Task.Run<double>(() => { return objCalcClient2.Divide(dblX, dblY); });
WriteLine(string.Format("Calling Div >> X : {0:F2} Y : {1:F2} Result : {2:F2}", dblX, dblY, dblResult));
}
void WriteLine(string Text)
{
tvConsole.Text += System.Environment.NewLine + Text;
tvConsole.Invalidate();
}
Я не уверен, если я должен заполнить свойство Transport, чтобы получить необеспеченные и не аутентифицированное соединение, но оно сработало. Это все, что я хочу.
Но самое лучшее, это также работает в проекте Xamarin.Forms как часть библиотеки PCL.
private void Initialize()
{
EndpointAddress ea = new EndpointAddress("http://x.x.x.x:9001/CalcService");
BasicHttpBinding bhttpb = new BasicHttpBinding();
bhttpb.Security.Mode = BasicHttpSecurityMode.None;
objCalcClient2 = new CalcServiceClient(bhttpb, ea);
}
public async void DoStuff()
{
dblResult = await Task.Run<double>(delegate { return objCalcClient2.Add(dblX, dblY); });
WriteLine(string.Format("Calling Add >> X : {0:F2} Y : {1:F2} Result : {2:F2}", dblX, dblY, dblResult));
dblResult = await Task.Run<double>(() => { return objCalcClient2.Subtract(dblX, dblY); });
WriteLine(string.Format("Calling Sub >> X : {0:F2} Y : {1:F2} Result : {2:F2}", dblX, dblY, dblResult));
dblResult = await Task.Run<double>(() => { return objCalcClient2.Multiply(dblX, dblY); });
WriteLine(string.Format("Calling Mul >> X : {0:F2} Y : {1:F2} Result : {2:F2}", dblX, dblY, dblResult));
dblResult = await Task.Run<double>(() => { return objCalcClient2.Divide(dblX, dblY); });
WriteLine(string.Format("Calling Div >> X : {0:F2} Y : {1:F2} Result : {2:F2}", dblX, dblY, dblResult));
}
void WriteLine(string Text)
{
Debug.WriteLine(Text);
}
Я думал, что должен был реализовать это для каждого устройства, но нет, WCF тоже можно использовать.
Смежные вопросы
- 1. Доступ к WCF, размещенному в службе Windows
- 2. Невозможно получить доступ к WCF, размещенному в службе Windows
- 3. Доступ к веб-сервису WCF, размещенному на виртуальной машине AWS
- 4. Доступ к сервису WCF, размещенному на IIS7.5, из настольного приложения
- 5. Не удается получить доступ к сервису WCF, размещенному в IIS7
- 6. Доступ к WCF, размещенному в Windows Service, в приложении silverlight
- 7. Доступ к сервису WCF с помощью Windows Phone
- 8. Доступ к веб-сервису wcf с powershell2
- 9. Доступ к сервису WCF через интернет
- 10. Доступ к службе wcf
- 11. доступ к сервису WCF по URL-адресу
- 12. Доступ к сервису WCF для резервирования (failover)
- 13. Доступ к WCF-сервису с использованием Java
- 14. Доступ к сервису WCF с мобильного клиента с идентификатором пользователя
- 15. Доступ к веб-сервису WCF в VB6
- 16. Не удается получить доступ к сервису wcf, размещенному на iis, из php с soapclient
- 17. доступ к веб-службе WCF
- 18. Подключение к сервису windows WCF для silverlight
- 19. Удаленный доступ к сервису Tomcat
- 20. Доступ к службе WCF в приложении Windows Store зависает
- 21. Xamarin: подключиться к локально размещенному веб-сервису
- 22. Доступ к сервису WCF от Silverlight
- 23. Доступ к сервису WCF через интернет?
- 24. WCF в службе windows
- 25. Не удалось получить доступ к удаленному веб-сервису WCF, размещенному на сервере
- 26. Ограничить доступ к веб-сервису в домене
- 27. Подключитесь к самообслуживаемому WCF-сервису
- 28. Доступ к сервису извне интрасети
- 29. Доступ к службе WCF в MVC Razor
- 30. Доступ к ServiceModel.FaultException Detail в службе WCF
Если вы используете «localHost» и используете эмулятор Android, вы не сможете связаться с ним. Вам нужно будет разместить свою услугу по-настоящему. Просто говорю – user1
Если я говорю мобильное устройство, я говорю о физическом мобильном устройстве. Служба размещается с локальным IP-адресом моего ПК. Эта услуга не предназначена для размещения в Интернете, только внутри локальной сети. И да, устройство находится в той же сети. – EaranMaleasi
Я не уверен, что даже физические устройства могут связаться с LocalHost. Вы должны будете размещать его в своей локальной сети правильно, а не localhost – user1