我正在尝试将wcf restful服务添加到我现有的asp.net 4.0网站(不是mvc)。我发现很难找到一个好的教程,通过添加一个现有的应用程序/网站。我看到的每个地方都有关于创建新项目的注释(使用wcf restful模板)。 基本步骤是什么?我可以在没有.svc文件的情况下这样做,因为我在.net 4.0上吗?您可以指点我的任何教程吗?
到目前为止,我已尝试添加定义服务合同的IService.cs和Service.cs类,并使用webinvoke / webget属性,在global.casax中添加路由,在web.cong中添加服务定义,如本教程所示{{ 3}}但是当我指向localhost / restservice时,我找不到404。
更新: 这就是我在配置文件中的内容。请注意,这是一个现有的基于wcf soap的服务。
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="migrationServiceBehavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<basicHttpBinding>
<binding name="migrationHttpBinding" maxBufferSize ="104857600" maxReceivedMessageSize="104857600"/>
</basicHttpBinding>
</bindings>
<services>
<service name ="Site.Web.WebService.MigrationService" behaviorConfiguration="migrationServiceBehavior">
<endpoint binding="basicHttpBinding"
bindingConfiguration="migrationHttpBinding"
contract="Site.Web.WebService.IMigrationService"/>
</service>
</services>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true" />
</system.serviceModel>
答案 0 :(得分:9)
您不需要任何*.svc
文件用于WCF REST服务 - 您可以使用ServiceRoute
激活它 - 请参阅RESTful WCF Services with No svc file and No config以获得很好的解释。
基本上归结为在ServiceRoute
中向您的路线表添加global.asax
:
protected void Application_Start(object sender, EventArgs e)
{
RouteTable.Routes.Add(new ServiceRoute("", new WebServiceHostFactory(),
typeof(YourService)));
}
答案 1 :(得分:2)
不确定是否可以不使用svc文件。添加svc文件不是abig deal。只需单击添加新项目和YourServiceName.svc。在sc文件中输入以下代码: -
<%@ServiceHost Service="YourNamsespace.YourWCFservice"%>
.net 4可以通过简单的方式直接添加svc文件
public class Global : System.Web.HttpApplication
{
protected void Application_Start(object sender, EventArgs e)
{
RouteTable.Routes.Add(new ServiceRoute("", new WebServiceHostFactory(), typeof(YourService)));
}
}