Своя ASMX служба

Своя веб-служба (ASMX) в SharePoint

Рассмотрим процесс создания собственной веб-службы.

1. Добавим в проект (в папку layouts) файл текстовый файл, который назовём MyWebSrv.asmx

2. Рядом создадим новый класс MyWebSrv.cs


3. Откроем файл проекта (.csproj) текстовым редактором
    Найдем MyWebSrv.cs и сделаем следующие изменения:
   
  <Compile Include="Layouts\MyWebSrv.cs" />

заменим на

  <Compile Include="Layouts\MyWebSrv.cs">
      <DependentUpon>MyWebSrv.asmx</DependentUpon>
      <SubType>Component</SubType>
    </Compile>



4.  Отредактируем файл MyWebSrv.asmx. 

<%@ WebService Language="C#" Class="MyWebSrv.DataWebService , blog, Version=1.0.0.0, Culture=neutral, PublicKeyToken=10bd20619efdbcaf" %>

Хороший способ вычисления Assembly Name описан в следующей статье

5. Добавим в проект сборку System.Web.Services

6. Отредактируем класс MyWebSrv.cs

using System;
using System.Linq;
using System.Web.Services;

namespace MyWebSrv
{
    public class DataWebService : System.Web.Services.WebService
    {
        [WebMethod]
        public string TestingWork()
        {
            return "Service works normal";
        }
    }
}

7. Развернём проект и проверим работоспособность службы  http://servername/_layouts/MyWebSrv.asmx

В результате получим работы нашей функции будет возвращено
    <?xml version="1.0" encoding="utf-8" ?>
       <string xmlns="http://tempuri.org/">Service works normal</string>


P.S. Первые три пункта можно реализовать альтернативно: создать службу на web forms, а далее его добавить к своему проекту для SharePoint


Если требуется использовать GET запросы к нашей службе, то необходимо  в web.config в ноду <system.web> добавить следующее

<webServices>
  <protocols>
    <add name="HttpGet" />
  </protocols>
</webServices>

и к функции можно будет обращаться как http://servername/_layouts/MyWebSrv.asmx/TestingWork


Чтобы ещё  в функцию предавать параметры, добавим в необходиму функцию эти параметры

   [WebMethod]
        public string TestingWork(string value)
        {
            return "Service works normal. Значение: " +value;

        }

и будем передавать их следующим образом в адресной строке
http://servername/_layouts/MyWebSrv.asmx/TestingWork?value=test

Комментариев нет:

Яндекс.Метрика