我在ASP.NET下创建了一个REST服务器,但我无法找出启动服务的URL。我使用内置的Web服务器在VS 2010下运行。我相信它实际上正在运行(VS 2010启动正常)。但是我能想到的每个组合都没有提起它。
更新:请查看文件http://www.windward.net/temp/RestUnderAspDotNet.zip - 我有两个解决方案。 src \ update中的那个可以作为REST服务器正常运行。我在inetpub \ wwwroot \ update上有相同的代码,当它运行时,我找不到与之对话的网址。我尝试了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>
知道提示/测试GET的URL是什么?
谢谢 - 戴夫
答案 0 :(得分:1)
您可以尝试以下内容:
http://localhost:whateverportVSgivesyou/RestServiceImpl.svc/test
如果VS网络服务器正在运行,您应该看到它的系统托盘图标,如果您将鼠标悬停在它上面,您将看到它正在运行的端口...
答案 1 :(得分:0)
我终于弄明白了。我在Windward Wrocks的博客上也有截图。这是没有屏幕截图的解决方案: