我想创建一个返回简单字符串的服务。到目前为止,我已使用模板40(CS)以下列方式创建了WCF REST服务:
服务类:
namespace MobileREST
{
[ServiceContract]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
public class UserService
{
[WebGet(UriTemplate = "IMSI={i}", ResponseFormat = WebMessageFormat.Json)]
public string GetUsername(string i)
{
string username = DBWorks.GetUserName(i);
return username;
}
}
}
的Web.config:
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<modules runAllManagedModulesForAllRequests="true">
<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</modules>
</system.webServer>
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
<standardEndpoints>
<webHttpEndpoint>
<!--
Configure the WCF REST service base address via the global.asax.cs file and the default endpoint
via the attributes on the <standardEndpoint> element below
-->
<standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true"/>
</webHttpEndpoint>
</standardEndpoints>
</system.serviceModel>
<connectionStrings>
<add name="LocalDBString" connectionString="Data Source=.\sqlexpress;Initial Catalog=MobileRestDB;Integrated Security=True"/>
<add name="SecurityConnString" connectionString="Data Source=.\sqlexpress;Initial Catalog=LopataDB;Integrated Security=True" />
</connectionStrings>
</configuration>
该解决方案在调试时工作正常,但我没有找到在Windows(控制台)应用程序或IIS中托管此服务的方法,以便公开该服务。
客户端应该创建GET或POST请求并获得简短的答案。在调试模式下,对http://localhost:portNumber/UserService/IMSI=xxx
的请求只返回一个字符串xxx(没有http头),这是完美的,但我不知道如何公开相同的解决方案,以便在http://customWebAddress/UserService/IMSI=xxx
托管它并获得同样的结果。
如果有人能就上述问题提出任何解决方案或提供任何有用的资源,我将非常感激。
答案 0 :(得分:1)
要自我托管(在控制台应用程序或NT服务中),请使用以下内容:
class Program
{
static void Main(string[] args)
{
Uri baseAddress = new Uri("http://localhost:6677/UserService");
WebServiceHost host = new WebServiceHost(typeof(UserService),
new Uri[] { baseAddress });
host.Open();
Console.ReadLine();
host.Close();
}
}
创建WebServiceHost
的实例,它是知道如何处理REST服务的服务主机后代,并为您的服务建立一个基地址。
此应用程序运行后,您应该可以浏览到http://localhost:6677/UserService
并在那里查看您的服务...