我想为我即将编写的项目(在C#中)创建RESTful WCF服务。前端将使用JavaScript并由另一个程序员制作,因此他必须能够从同一本地网络访问我的服务。
当我想在IIS中创建一个新项目时,我看到还有一个新网站选项,我也可以选择WCF服务image
如果我希望能够在IIS中托管我的应用程序(在开发中而不必一遍又一遍地发布),那么哪一个将是正确使用的
我已经阅读了关于差异的MSDN Article,从它的声音来看,网站项目更多是我想要的。
我还要感谢关于该做什么的简短说明,因为我已经找到了一个关于创建WCF REST应用程序的快速教程,但没有为WebSite提供
答案 0 :(得分:1)
MSDN文章非常陈旧。您需要一个WCF服务应用程序项目。
对于仅从JavaScript访问的REST服务,您最好使用Web API。 WCF对此来说太过分了,特别是如果你不熟悉WCF的话。有关差异,请参阅http://msdn.microsoft.com/en-us/library/jj823172.aspx,教程请参见http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/tutorial-your-first-web-api。
答案 1 :(得分:1)
皮肤猫的方法不止一种(表达方式如此)。所以我会告诉你我是如何为类似的要求创建一个解决方案(前面将使用Angular开发)。
我决定创建两个:wcf服务库(项目)和wcf服务(网站)。我选择这个是因为我更喜欢将类库分成它自己的项目以供将来重用,但是这个人解释了为什么服务应用程序更好https://stackoverflow.com/a/12339815/1005142。选择是你的。
我采取的步骤是:
注意:此示例不包含可能值得研究的身份验证或跨域问题。
添加服务界面,例如:
/// <summary>
/// Test method that returns pings the service
/// </summary>
/// <returns></returns>
[WebGet(UriTemplate = "ping", ResponseFormat = WebMessageFormat.Json)]
[OperationContract]
string Ping();
创建关联的服务方法,例如
/// <summary>
/// Service method to ping the RESTful service
/// </summary>
/// <returns></returns>
public string Ping()
{
return "{Message" + ":" + "Pong" + "}";
//here I return a raw json string, but you could return a serialised object (like the
//CompositeType example) Then the conversion to JSON would be done transparently.
}
右键单击Web.Config文件并选择“编辑WCF配置”,这将为您提供一个有助于配置文件的工具。我不打算解释所有的选项,但是我的配置文件看起来如何。
更改Service.svc文件以包含刚刚创建的服务
构建项目并运行服务网站,该网站应将您带到根目录网页。单击Service.svc,它应该为您提供摘要。
复制看起来像http://localhost:63718/Service.svc
的网址,并将您的URITemplate名称添加到结尾(ping)。因此,网址看起来像http://localhost:63718/Service.svc/ping
使用链接。使用Fiddler,Chrome / Firefox插件测试链接
您仍需要发布到IIS。您可以右键单击服务网站,选择“发布网站”,然后配置服务器详细信息