【问题标题】:WCF endpoint address without .svc extension没有 .svc 扩展名的 WCF 终结点地址
【发布时间】:2012-09-25 21:19:26
【问题描述】:

我已经启动并运行了 WCF 服务,但今天我想如果我从真实地址中删除 .svc 扩展名并以这种方式访问​​我的服务会怎样? net.tcp://serveraddress/services/service 我但是一旦我更改了配置文件程序就没有启动。此程序和服务是使用 .NET 4.0 开发的,而 WCF 4 广告服务本身托管在 IIS 7.5 中

是否可以在将服务托管在 IIS 中时以这种方式访问​​服务?

【问题讨论】:

  • 您是否尝试过将 IIS 中的应用程序的默认页面更改为指向 svc 文件,或者您是否试图一起避免这种情况?
  • 我没有尝试更改默认页面,但我更愿意避免这种情况,因为默认页面不是好的解决方案,因为每个服务都需要具有相同的文件名,这是不可能的。

标签: wcf configuration iis-7.5


【解决方案1】:

这可能是 IIS 中的处理程序的问题。我还使用无扩展的 WCF 服务,并修改了我的 web.config 文件以使其工作。将此添加到您的 web.config 以查看是否有帮助:

<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
  <remove name="UrlRoutingModule" />
  <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</modules>

<handlers> 
<remove name="svc-Integrated-4.0" />
<add name="svc-Integrated-4.0" path="*" verb="*" type="System.ServiceModel.Activation.ServiceHttpHandlerFactory, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode,runtimeVersionv4.0" />
      <add 
        name="UrlRoutingHandler" 
        preCondition="integratedMode" 
        verb="*" path="UrlRouting.axd" 
        type="System.Web.HttpForbiddenHandler, System.Web,  
          Version=2.0.0.0, Culture=neutral,  
          PublicKeyToken=b03f5f7f11d50a3a"/> 
    </handlers> 
</system.webServer>

【讨论】:

  • '' 是你重写的正确方式吗?我为什么要删除和添加处理程序?
  • 我仍然无法达到预期的效果,谁能解释一下如何配置?
  • 有人知道这样做吗?我的问题是我正在使用 net.tcp 绑定。如果在浏览器的 http 请求中引用它,它可以工作,但不适用于 net.tcp
【解决方案2】:

我托管了没有 svc 文件的 WCF 服务。我在 Global.asax 文件的 Application_Start 方法中将 ServiceRoute 添加到 RouteTable。

protected void Application_Start(object sender, EventArgs e)
{
    RouteTable.Routes.Add(new ServiceRoute("AdminDataService", new WebServiceHostFactory(), typeof(AdminService)));
    RouteTable.Routes.Add(new ServiceRoute("AuthenticationService", new WebServiceHostFactory(), typeof(AuthenticationService)));
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-09
    • 2010-09-26
    • 1970-01-01
    • 2013-05-31
    • 2011-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多