一般在创建WCF服务时会用Serivce.svc文件访问,地址如:http://localhost/applicationname/Serivce.svc/Name
现在用路由映射成:http://localhost/applicationname/MyService/Name 方法如下:
首先在Global.asax中的Application_Start事件中添加以下代码:
void Application_Start(object sender, EventArgs e)
{
System.Web.Routing.RouteTable.Routes.Add(newSystem.ServiceModel.Activation.ServiceRoute("MyService", new System.ServiceModel.Activation.WebServiceHostFactory(), typeof(Service)));
}
其中"MyService"为自定义要在地址栏中映射的名称,如: http://localhost/applicationname/MyService/Name
typeof(Service)中的"Service"为WCF中服务实现类Service.cs,一般继承IService.cs接口
接下来必须在web.config中<serviceHostingEnvironmentmultipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true">的aspNetCompatibilityEnabled设为true
然后再在Service.cs服务类上面添加:
[AspNetCompatibilityRequirements(RequirementsMode=AspNetCompatibilityRequirementsMode.Allowed)] //记得引用using System.ServiceModel.Activation;
public class Service : IService
{
public string GetName(string Name)
{
return "your name is " + Name;
}
}
此外还有IService.cs接口中方法声明中设置UriTemplate以接受参数:
[ServiceContract]
public interface IService
{
[OperationContract, WebGet(UriTemplate = "{Name}", BodyStyle =WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Xml)]
string GetName(string Name);
}
WCF自定义地址路由映射(不用svc文件)