Я создал 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?
спасибо - Дейв