如何修改WCF Service的访问URL路径?
WCF服务路径调整配置步骤
要把服务访问路径从根目录调整到/ServiciosDePrueba子路径,按以下步骤操作即可,兼容性无问题:
- 调整服务文件物理位置
在WCF项目根目录新建名为ServiciosDePrueba的文件夹,将根目录下的WcfPruebaService.svc文件(如果后置代码.svc.cs和svc文件平级,也一并移动)剪切到新建的文件夹内。如果你用的是.NET 4.0+支持的无svc文件激活模式,可以跳过这一步直接修改路由配置,但物理移动文件是坑最少、适配所有WCF版本的方案。
- 校验开发服务器虚拟路径配置(VS + IIS Express场景)
- 右键WCF项目 → 选择「属性」→ 切换到「Web」标签页
- 确认IIS Express的端口保持56471不变,根地址不需要修改
- 点击「创建虚拟目录」按钮,等待VS弹出虚拟目录创建成功的提示即可
- 更新web.config服务配置
打开项目根目录的web.config,定位到<system.serviceModel>节点:- 所有endpoint如果配置的是相对地址(比如
address=""、address="rest"这类),不需要做任何修改,WCF会自动根据svc当前所在路径生成访问地址 - 如果之前硬编码了旧的完整服务地址(比如写死了
http://localhost:56471/WcfPruebaService.svc),把所有旧地址替换为新路径即可 - 确认
<serviceMetadata>节点的httpGetEnabled属性为true,元数据地址会随svc路径自动更新,不需要手动配置
参考最小可用配置片段:
<system.serviceModel> <behaviors> <serviceBehaviors> <behavior> <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/> <serviceDebug includeExceptionDetailInFaults="false"/> </behavior> </serviceBehaviors> </behaviors> <services> <service name="你的服务命名空间.WcfPruebaService"> <endpoint address="" binding="basicHttpBinding" contract="你的服务契约命名空间.IWcfPruebaService"/> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> </service> </services> <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" /> </system.serviceModel> - 所有endpoint如果配置的是相对地址(比如
- 验证结果
保存所有修改后重新生成项目,启动服务后直接访问http://localhost:56471/ServiciosDePrueba/WcfPruebaService.svc,能正常打开WCF服务帮助页即配置成功。旧的根路径地址返回404属于正常现象,更新客户端服务引用时使用新地址即可。
如果是部署到正式IIS环境,不需要修改项目代码,只需要在对应站点下新建名为ServiciosDePrueba的应用程序/虚拟目录,将WCF发布文件上传到该目录对应的物理路径,配置好对应版本.NET应用池权限即可直接访问新地址。
内容的提问来源于stack exchange,提问作者EnMiPcFunciona
相关产品推荐
相关产品推荐

