Коллеги, приветствую.
Собственно вопрос - как разрешить удаленный вызов процедур Web- сервиса? Есть простой WCF Web- сервис, на его основе получен WSDL, из которого сгенерированы прокси- классы. Эти прокси- классы использует простой консольный клиент, например, просто вернуть строку с сервера - вылетает окно:
Судя по ссылке, запрос не проходит авторизацию, хотя в Terrasoft.WebApp\Web.config указано, что:
Как отключить авторизацию для RPC?
Был бы весьма признателен за информацию.
Спасибо.
--
С уважением, Алексей Быков.
Нравится
Переехали решать задачу в рамках технической поддержки:smile:
Вот некоторые подробности.
1. В \Terrasoft.WebApp\ServiceModel добавил UsrService.svc:
<%@ ServiceHost Language="C#" Debug="true" Service="Terrasoft.WebApp.ServiceModel.UsrService" CodeBehind="UsrService.svc.cs" %>
2. В \Terrasoft.WebApp\Web.config добавил:
<appSettings> ... <add key="AllowedLocations" value="...;ServiceModel/UsrService.svc"/> ... </appSettings> ... <location path="ServiceModel/UsrService.svc"> <system.web> <authorization> <allow users="*" /> </authorization> </system.web> </location> ...
Контракт Web- сервиса в конфигурации (UsrIService.svc):
using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.ServiceModel.Web; using System.Text; namespace SimpleCustomService { [ServiceContract] public interface UsrIService { [OperationContract] string SPMClientInfo(); } }
Реализация Web- сервиса в конфигурации (UsrService.svc):
using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.ServiceModel.Web; using System.Text; namespace SimpleCustomService { public class UsrService : UsrIService { public string SPMClientInfo() { return "test string"; } } }
В \Terrasoft.WebApp\ServiceModel\http\services.config добавил:
... <service behaviorConfiguration="BaseServiceBehavior" name="SimpleCustomService.UsrService"> <endpoint name="UsrServiceEndPoint" binding="webHttpBinding" behaviorConfiguration="RestServiceBehavior" bindingNamespace="http://Terrasoft.WebApp.ServiceModel" contract="SimpleCustomService.UsrIService" /> <endpoint address="soap" binding="basicHttpBinding" contract="SimpleCustomService.UsrIService"/> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> </service> ...
Нашел вот статью, попробую сделать как там описано. Аутентификация внешних запросов к веб-сервисам bpm'online
Отличная статья, как я теперь могу вызвать метод Web- сервиса, используя AuthCookie? Должен- ли я менять код Web- сервиса, чтобы аутентифицировать внешние запросы?
Здравствуйте.
Обратите внимание на ресурс: http://stackoverflow.com/questions/16028014/how-can-i-pass-a-username-p…
Здравствуйте, Александр! Спасибо большое за ответ, попробую сделать так.
Возвращаясь к началу, хочу отметить одну интересную деталь - если в Visual Studio попытаться добавить ссылку на WSDL (Add Web Reference), то получим такое вот окно:
URL тот же самый, что и в консоли:
http://localhost:8080/NuiLogin.aspx?ReturnUrl=%2f0%2fServiceModel%2fSimpleCustomService.svc