Попытка запустить службу REST в ASP.NET - PullRequest
1 голос
/ 16 марта 2012

Я создал REST-сервер под ASP.NET, и я не могу определить URL для запуска службы. Я работаю под VS 2010, используя встроенный веб-сервер. Я считаю, что он действительно работает (VS 2010 запускается нормально). Но каждая комбинация, которую я могу придумать для URL, не поднимает ее.

Обновление: Пожалуйста, посмотрите на файл http://www.windward.net/temp/RestUnderAspDotNet.zip - у меня есть два решения. Тот, что находится в src \ update, прекрасно работает как REST-сервер. У меня почти такой же код в inetpub \ wwwroot \ update, и пока он работает, я не могу найти URL, который говорит с ним. Я перепробовал каждый вариант http://localhost:56469/update/App_Code/RestServiceImpl.svc/test, который мог придумать, и получил 403 или 404.

Есть идеи, почему? (Я не хочу никакой защиты в этом - любой сможет ударить его, как только он будет.)

App_Code \ IRestServiceImpl.cs:

[ServiceContract]
public interface IRestServiceImpl
{
    [OperationContract]
    [WebInvoke(UriTemplate = "/version", Method = "POST")]
    XmlElement GetVersion(XmlElement stats);

    [OperationContract]
    [WebInvoke(UriTemplate = "/test", Method = "GET")]
    string GetTest();
}

App_Code \ RestServiceImpl.svc:

<%@ ServiceHost Language="C#" Debug="true" Service="RestServiceImpl" CodeBehind="RestServiceImpl.svc.cs" %>

App_Code \ RestServiceImpl.cs:

using System.ServiceModel;
using System.ServiceModel.Activation;
using System.Xml;

[AspNetCompatibilityRequirements
    (RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
public class RestServiceImpl : IRestServiceImpl
{
    public XmlElement GetVersion(XmlElement stats)
    {
        XmlDocument doc = new XmlDocument();
        XmlElement root = doc.CreateElement("update");
        root.SetAttribute("version", "11.0.13.0");
        doc.AppendChild(root);
        return doc.DocumentElement;
    }

    public string GetTest()
    {
        return "update server is running";
    }
}

Соответствующая часть web.config:

<system.web>
    <compilation debug="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
    <services>
        <service name="RestServiceImpl">
            <!-- Service Endpoints -->
            <!-- Unless fully qualified, address is relative to base address supplied above -->
            <endpoint address ="" binding="webHttpBinding" contract="IRestServiceImpl" behaviorConfiguration="webBinding">
            </endpoint>
        </service>
    </services>

    <behaviors>
        <endpointBehaviors>
            <behavior name="RestServiceImpl">
                <webHttp/>
            </behavior>
        </endpointBehaviors>
    </behaviors>
    <bindings>
        <webHttpBinding>
            <binding name="webBinding">
            </binding>
        </webHttpBinding>
    </bindings>
</system.serviceModel>
<system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>

Есть идеи, что такое URL для вызова / test GET?

спасибо - Дейв

Ответы [ 2 ]

1 голос
/ 16 марта 2012

Вы можете попробовать что-то вроде:

http://localhost:whateverportVSgivesyou/RestServiceImpl.svc/test

Если веб-сервер VS работает, вы должны увидеть для него значок в системном трее, а если навести на него курсор, то увидите порт, на котором он работает...

0 голосов
/ 07 апреля 2012

Я наконец понял это. У меня есть это также в моем блоге в Windward Wrocks со скриншотами. Вот решение без скриншотов:

  1. Установите шаблон * 406 * WCF REST Service 40 (CS) (требуется .NET 4.0).
  2. Создание службы WCF. Это Новый «Проект…», а не «Веб-сайт…». И это под общими шаблонами «Visual C #», а не «WCF»!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...