我的小组使用表单身份验证构建内部托管的ASP.NET MVC网站。
我想在与ASP.NET MVC网站相同的虚拟目录中托管WCF服务。
我的问题:
如何自由地制作WCF服务 可访问,即没有 表单的身份验证。
我目前的困境是:
错误:无法从中获取元数据 http://localhost/Services/MyService.svc 如果这是Windows(R)通信 您拥有的基础服务 访问,请检查您有 启用了元数据发布 指定地址。帮助启用 元数据发布,请参阅 MSDN文档在 http://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata 交换错误
答案 0 :(得分:2)
您的web.config中是否为服务定义了mex endpoint
?测试客户很可能正在寻找这个。
如果您这样做,另一种可能性是禁用services文件夹上的授权。我从来没有测试过这个,但理论上它可能会起作用......
因此,如果网站为localhost
,请将WCF服务放入localhost/services/myservice.svc
等。然后将web.config添加到/services
文件夹,该文件夹将覆盖授权并允许所有:
<configuration>
<authorization>
<allow users="*" />
</authorization>
</configuration>
答案 1 :(得分:1)
如果您可以将.svc文件放入虚拟目录的子文件夹中,则可以利用Forms身份验证中的路径属性,以使用不同级别的授权来访问它。 Here is a tutorial
答案 2 :(得分:1)
我假设您使用表单身份验证,虚拟目录配置为在IIS中进行匿名访问。话虽如此,如果你放置你的WCF服务,例如* .svc文件在其自己的目录中,您可以更新主web.config文件并添加位置标记以禁用包含该服务的目录的表单身份验证。还要确保通过web.config的<system.servicemodel>
部分中的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>
答案 3 :(得分:1)
非常感谢所有试图回答这个问题的人。
在小时解决此问题后,我发现自定义身份验证模块拒绝我的客户端尝试获取元数据。我只想说,我需要绕过这个逻辑。
哦 - 单步执行代码非常被低估。 ;)