Я написал веб-службу .NET, которая должна быть использована клиентом вне моего контроля (мой сервер является симулятором для реального сервера, написанного на PHP). Веб-служба работает по своему желанию, но клиент не имеет возможности добавлять расширение .asmx или любое расширение, если это необходимо, в свои вызовы. Они в основном используют http://localhost/soap/MyWebService, в то время как IIS ожидает http://localhost/soap/MyWebService.asmx. Есть ли способ заставить IIS отвечать на запросы без расширения .asmx?Позвоните в веб-службу IIS без расширения .asmx
ответ
Добавить отображение подстановочные, который будет перенаправлять все запросы через ASP.NET:
Вам также нужно сделать некоторые URL переписывания, чтобы разрешить входящий запрос http://localhost/soap/MyWebService
для сопоставления http://localhost/soap/MyWebService.asmx
.
http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx
В принципе, вы можете добавить что-то вроде следующего в ваш метод Application_BeginRequest
:
string path = Request.Path;
if (path.Contains("/soap/") && !path.EndsWith(".asmx"))
Context.RewritePath(path + ".asmx");
Я не проверял (и это HACK), но это должно вам начать работу.
Вы также можете поместить его в каталог самостоятельно, а затем в IIS установите его как документ по умолчанию.
На сервере: C: /mywebsite.com/mywebservice/mywebservice.asmx
В IIS установлен mywebservice.asmx в качестве документа по умолчанию
Пробовал, и это не сработало. – jercra
Мне кажется, что с PHP-клиентом что-то не так. Они не должны пересматривать URL-адрес службы каким-либо образом. Независимо от того, какой URL указан в метаданных сервера или конфигурации клиента, это URL, который они должны использовать.
Я не знаю PHP, но может ли кто-нибудь сказать мне, почему для PHP нужно иметь в виду, сколько точек в URL-адресе? Я не вижу, что для любого клиента важно, будет ли мое обслуживание http://localhost/foo/bar или «http://localhost/foo/b.a.r.asmx?PHP=0».
Проблема не в том, что PHP заботится о том, сколько точек есть. Это то, что клиент PHP не находится под моим контролем, и адрес жестко закодирован в http: // localhost/foo/bar, а IIS ожидает http: //localhost/foo/bar.asmx. Мне нужно, чтобы IIS понимал, что запросы без .asmx все равно должны обрабатываться. – jercra
Это начинает подтверждать мою веру, почему в мире было бы хорошей идеей для любого клиента веб-службы или другого ресурса жестко закодировать URL-адрес ??? Изменение URL-адресов. Они должны перенести URL из некоторого хранилища конфигурации. –
В php вам нужно только вызвать wsdl, вам не нужен asxm или такие глупые вещи, которые делают .net.
один простой пример
$wsdl = "http://domain/wsdlfile.wsdl"; //url to wsdl
$client = new SoapClient($wsdl,array('trace' => 1,'encoding' => 'UTF-8','exceptions' => 0));
$Return = $client->callfunction();
echo htmlspecialchars($client->__getLastResponse());
это все.
Простите меня, но даже PHP не может вызвать WSDL. WSDL просто описывает службу, которую позже будет вызывать PHP. WSDL обычно будет содержать URL-адрес фактического сервиса, который будет глупым .asmx-файлом. –
- 1. Позвоните в asmx webservice без расширения сеанса пользователя
- 2. IIS Файлы без расширения
- 3. Позвоните в веб-службу .asmx из другой веб-службы .asmx
- 4. Загрузка файла IIS без расширения
- 5. Добавление расширения PHP в IIS без перезагрузки
- 6. Удаление расширения .asmx из веб-службы URL
- 7. Веб-служба ASMX в IIS - соединение отказано
- 8. Расширения ISAPI в IIS Express?
- 9. неизвестные расширения, заблокированные IIS
- 10. Обслуживание Json из службы WCF без расширения в IIS
- 11. ASMX - веб-метод, не вызываемый на IIS
- 12. Позвоните Api без специального маршрута
- 13. Invoke ASMX Web Service без Visual Studio
- 14. IIS 6 HttpModule не вызывается, когда путь даются без расширения
- 15. Загрузка больших файлов без расширения размера файла IIS
- 16. Пользовательские расширения URL-адреса/маршрутизация без доступа к IIS
- 17. Позвоните в функцию расширения хрома и получите ответ
- 18. Позвоните в dotnet asmx webservice с параметром, используя андроидную библиотеку волейбола в android
- 19. IIS Express не будет обслуживать веб-службы ASMX
- 20. Отказ от расширения файлов в IIS
- 21. ASP.NET - пользовательские расширения отображения IIS - как?
- 22. Развертывание приложения Silverlight со встроенным ASMX WebService для IIS
- 23. Позвоните на веб-страницу без браузера и без ответа
- 24. Не удается разместить веб-службу ASMX на iis
- 25. Позвоните в веб-службу ASMX с параметром и получите значение от этого веб-сервиса?
- 26. Позвоните в webservice (.asmx) с другого веб-сайта/webapp с помощью javascript
- 27. Позвоните в asmx Web-сервис из приложения android с помощью KSOAP
- 28. Создание веб-службы без ASMX-файла?
- 29. Веб-сервис ASMX, внешние WSDL * без * wsdl.exe
- 30. Позвоните в WebServices из JavaScript без использования ScriptManager в asp.net
Хотя это решение действительно работает, оно работает только на системах с IIS 6 или выше. – jercra
Можно добавить подстановочный знак в IIS 5.x, но шаги разные. – Brannon
Да, вы можете добавить сопоставление подстановки в IIS 5.x, но есть ошибка, когда дело доходит до веб-службы, в которой вы получите сообщение об ошибке, когда глагол не разрешен. Исправлена ошибка на досках сообщений ASP.net. – jercra