Asp.net 公共WCF服务需要身份验证,尽管未指定安全性

Asp.net 公共WCF服务需要身份验证,尽管未指定安全性,asp.net,wcf,web-services,Asp.net,Wcf,Web Services,我已经在ASP.NET站点上发布了一个WCF服务(MyService.svc),位于名为WebServices的子文件夹中 在本地ASP.NET web服务器上运行时,它工作正常。当发布到IIS运行站点并尝试访问(例如,/WebServices/MyService.svc/jsdebug)时,我会得到401个未经授权的。现场的其余部分工作正常 有人知道为什么吗 以下是MyService.svc的内容: <%@ServiceHost Language="C#" Debug

我已经在ASP.NET站点上发布了一个WCF服务(
MyService.svc
),位于名为
WebServices
的子文件夹中

在本地ASP.NET web服务器上运行时,它工作正常。当发布到IIS运行站点并尝试访问(例如,
/WebServices/MyService.svc/jsdebug
)时,我会得到
401个未经授权的
。现场的其余部分工作正常

有人知道为什么吗


以下是MyService.svc的内容:

<%@ServiceHost 
    Language="C#"
    Debug="true" 
    Service="MyApp.Core.MyService, MyApp.Core"
    Factory="System.ServiceModel.Activation.WebScriptServiceHostFactory"
%>


MyApp.Core.MyService
是一个实现
IMyService
的类(它具有
ServiceContract
属性,并且具有
OperationContract
属性的方法声明)。

web.config说了什么?您是否在服务本身或目录上进行身份验证?交通安全是开着还是关着?信息安全


svc文件不配置安全性,这是配置文件的一部分。有3个地方可能会阻止呼叫:

  • 在IIS设置中,检查是否启用了匿名身份验证
  • NTFS文件访问设置,检查作为应用程序池标识的用户是否具有读取权限
  • 在web.config中,检查身份验证模式是否为“无”
以上所有这些都是在它到达WCF配置中可能阻止它的地方之前。但从您对blowdart的评论来看,您似乎尚未配置WCF安全性


还要检查IIS日志中的401错误。并检查这是否相关。

默认情况下,WCF服务将执行Windows身份验证,除非另有配置。我认为以下几点可以达到目的:

  <bindings>
    <wsHttpBinding>
      <binding name="wsHttp">
        <security mode="None"/>
      </binding>
    </wsHttpBinding>
  </bindings>


..并将您的端点配置为使用此绑定配置。

在任何位置的站点上都没有使用HTTP身份验证的配置。Web.config没有特定于该服务的配置(该.svc文件使用WCF服务的“自动配置”方法)。