Создание конфигурационного веб сервиса, ошибка NotFound (404) при запросе

Создал скрипт по примеру из документации, опубликовал, обновил все базы, скомпилировал. Сделал запрос в Postman на авторизацию - все успешно, получил куки. При запросе из Postman или строки браузера к моему скрипту выдает ошибку: 

Ошибка HTTP 404.0 — Not Found

Запрошенный адрес: 

http://localhost:82/0/rest/UsrCustomConfigurationService/GetContactIdBy…

Физический путь: 

С:\inetpub\wwwroot\_SalesEnterprise_Softkey_MSSQL_ENU\Terrasoft.WebApp\rest\UsrCustomConfigurationService\GetContactIdByName



Очевидно, что путь запроса виртуальный, однако происходит поиск по физическому пути, где у меня нет папки rest, мой скрипт лежит совсем в другой месте. Как настроить выполнение скрипта? Может что-то нужно настроить в IIS (WCF)?



Текст скрипта:

 

namespace Terrasoft.Configuration.UsrCustomNamespace
{
    using System;
    using System.ServiceModel;
    using System.ServiceModel.Web;
    using System.ServiceModel.Activation;
    using Terrasoft.Core;
    using Terrasoft.Web.Common;
    using Terrasoft.Core.Entities; 
 
    [ServiceContract]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
    public class UsrCustomConfigurationService: BaseService
    {
        // Метод, возвращающий идентификатор контакта по его имени.
        [OperationContract]
        [WebInvoke(Method = "GET", RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped,
        ResponseFormat = WebMessageFormat.Json)]
        public string GetContactIdByName(string Name) {
            // Результат по умолчанию.
            var result = "";
            // Экземпляр EntitySchemaQuery, обращающийся в таблицу Contact базы данных.
            var esq = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "Contact");
            // Добавление колонок в запрос.
            var colId = esq.AddColumn("Id");
            var colName = esq.AddColumn("Name");
            // Фильтрация данных запроса.
            var esqFilter = esq.CreateFilterWithParameters(FilterComparisonType.Equal, "Name", Name);
            esq.Filters.Add(esqFilter);
            // Получение результата запроса.
            var entities = esq.GetEntityCollection(UserConnection);
            // Если данные получены.
            if (entities.Count > 0)
            {
                // Возвратить значение колонки "Id" первой записи результата запроса.
                result = entities[0].GetColumnValue(colId.Name).ToString();
                // Также можно использовать такой вариант:
                // result = entities[0].GetTypedColumnValue<string>(colId.Name);
            }
            // Возвратить результат.
            return result;
        }
    }
}
 
​

 

Нравится

2 комментария

Возможно, что-то неверно в заголовках запроса, который отправляете к серверу. Посмотрите в Fiddler все подробности этого запроса и заодно ответа.

удалось решить проблему ?

Показать все комментарии