当然,没问题:首先,阅读 A Developer's Introduction to Windows Communication Foundation 4 中有关 WCF 4 新功能的所有信息。
您正在寻找的是无文件服务激活。这是您的 <system.serviceModel> 中的一个新设置,如下所示:
<serviceHostingEnvironment>
<serviceActivations>
<add factory="System.ServiceModel.Activation.ServiceHostFactory"
relativeAddress="[subfolder/]filename.svc" or "~/[subfolder/]filename.svc"
service="SomeNamespace.YourService"/>
</serviceActivations>
</serviceHostingEnvironment>
基本上,您在 *.svc 文件中拥有的所有信息(路径、要调用的服务)现在都在此配置部分中。
您应该可以在
上调用此服务
http://yourserver/virtualdirectory/YourService
现在 - 不再有 *.svc,没有凌乱的 URL 重写等 - 它只是简单的工作!
更新:它似乎没有那么好用,除非你进去并在你的相对路径中添加一个 *.svc 扩展 - kind 破坏了整个目的!
如果您想使用 ASP.NET 路由进行注册,请查看有关该主题的 MSDN docs。你必须在你的应用程序启动中有这样的东西,在一个网络应用程序中,global.asax.cs:
void Application_Start(object sender, EventArgs e)
{
RegisterRoutes(RouteTable.Routes);
}
private void RegisterRoutes(RouteCollection routes)
{
routes.Add(new ServiceRoute("YourService",
new WebServiceHostFactory(), typeof(SomeNamespace.YourService)));
}
希望这样,您就可以在没有任何 *.svc 文件扩展名的情况下启动并运行您的服务!