Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何在没有表单身份验证的虚拟目录中公开WCF服务?_Asp.net Mvc_Wcf_Forms Authentication_Iis 5 - Fatal编程技术网

Asp.net mvc 如何在没有表单身份验证的虚拟目录中公开WCF服务?

Asp.net mvc 如何在没有表单身份验证的虚拟目录中公开WCF服务?,asp.net-mvc,wcf,forms-authentication,iis-5,Asp.net Mvc,Wcf,Forms Authentication,Iis 5,我的团队使用表单身份验证构建内部托管的ASP.NET MVC网站 我想在ASP.NET MVC网站所在的虚拟目录中托管WCF服务 我的问题: 如何免费提供WCF服务 无障碍,即无障碍 表单身份验证 我目前的困境是: 如果首先使用web浏览器通过表单身份验证进行身份验证,我可以访问.svc并查看wsdl信息 但是,当我尝试使用wcfTestClient.exe访问WCF服务时,出现以下错误: 错误:无法从中获取元数据 如果这是Windows(R)通信 你的基础服务 访问,请检查您是否有 已在上

我的团队使用表单身份验证构建内部托管的ASP.NET MVC网站

我想在ASP.NET MVC网站所在的虚拟目录中托管WCF服务

我的问题:

如何免费提供WCF服务 无障碍,即无障碍 表单身份验证

我目前的困境是:

  • 如果首先使用web浏览器通过表单身份验证进行身份验证,我可以访问.svc并查看wsdl信息
  • 但是,当我尝试使用wcfTestClient.exe访问WCF服务时,出现以下错误:
错误:无法从中获取元数据 如果这是Windows(R)通信 你的基础服务 访问,请检查您是否有 已在上启用元数据发布 指定的地址。寻求帮助 元数据发布,请参阅 MSDN文档位于 交换错误


如果可以将.svc文件放入虚拟目录的子文件夹中,则可以利用Forms Authentication中的path属性,使用不同级别的授权访问该文件

您的web.config中是否为该服务定义了
mex端点
?testclient可能正在寻找这个

如果这样做,另一种可能是禁用services文件夹上的授权。我从未测试过这个,但理论上它可能有效

因此,如果网站是
localhost
,则将WCF服务放在
localhost/services/myservice.svc
或类似位置。然后将web.config添加到
/services
文件夹,该文件夹覆盖授权并允许所有:

<configuration>
   <authorization>
      <allow users="*" />
   </authorization>
</configuration>

由于您使用的是表单身份验证,因此我假定虚拟目录配置为在IIS中进行匿名访问。话虽如此,如果将WCF服务(例如.*.svc文件)放在其自己的目录中,则可以更新主web.config文件并添加位置标记以禁用包含该服务的目录的表单身份验证。另外,请确保通过web.config的
部分中的WCF配置绑定设置解除安全性,如果该部分尚未出现,则需要添加:

<bindings>
  <wsHttpBinding>   <!-- one of many possible bindings -->
    <binding name="...">          
      <security mode="None"> <-- allows anonymous access -->
        <message clientCredentialType="None"/> <-- allows anonymous access -->
      </security>
    </binding>
  </wsHttpBinding>
</bindings>

非常感谢所有试图回答这个问题的人

经过数小时的故障排除,我发现一个自定义身份验证模块拒绝了我的客户端获取元数据的尝试。我只想说,我需要绕过这个逻辑

哦,而且对代码的逐步理解被低估了