我有一个托管在IIS.WCF上的WCF服务,因为业务原因,我不能发布这个实例的公共URL,但我相信您会得到我的意思:
问题是,为了到达我的端点Service.svc ,我似乎已经将作为路径段的一部分,也就是说,我必须使用这样的URL:
http://<domain>/<app-name>/Service.svc/<relative-path>
如何避免这种情况?我的意思是,我想通过以下方式访问我的服务:
http://<domain>/<app-name>/<relative-path>
在开发过程中,当我自我托管服务时,我完全能够做到这一点。
最后,但这并不是那么超然,浏览到http://<domain>/<AppName>/Service.svc网址会显示标准的服务信息页面:
有什么办法可以阻止我这样做吗?

发布于 2012-07-11 20:32:15
第一部分:如果没有URL的"service.svc“部分,可以使用ASP.NET路由特性和ServiceRoute类--您的路由的前缀将是空字符串。http://blogs.msdn.com/b/endpoint/archive/2010/01/25/using-routes-to-compose-wcf-webhttp-services.aspx的文章展示了如何做到这一点。
第二部分:为了防止显示“帮助”页面,您可以通过配置(或者通过使用自定义服务主机工厂的代码)禁用它。下面是如何通过配置完成的:
<serviceBehaviors>
<behavior>
<serviceDebug httpHelpPageEnabled="false" httpsHelpPageEnabled="false"/>
</behavior>
</serviceBehaviors>该行为没有"name“属性,这意味着它将用作服务的默认行为。
发布于 2015-01-08 21:56:46
对像我这样的.net新闻的一步一步的说明:
Web.config文件并确保aspNetCompatibilityEnabled设置为true:Application_Start方法如下所示:
受保护的void Application_Start(对象发送方,EventArgs e) {RouteTable.Routes.Add(新ServiceRoute("",新ServiceHostFactory(),typeof(MyServiceImplementation);}(用Service1.svc中调用的类更改MyServiceImplementation )
如果没有找到这些内容,并且您使用的时间早于.net 4.5,请确保使用的是完整安装而不是客户端安装。还要确保添加了这些包引用(右键单击-project,单击Add->Reference,找到包名并确保它被选中)。
发布于 2012-07-11 20:19:10
您可以通过简单地不公开服务元数据来达到此目的--只需注释端点。
<endpoint address="mex" binding="mexHttpBinding" name="IMetadataExchange_mexHttpBinding" contract="IMetadataExchange" />根据url -我完全同意@Edmund Y-他提供了有用的链接

https://stackoverflow.com/questions/11440562
复制相似问题