一个基于Silverlight的intranet应用,需要启用Windows集成验证,设置如下:
1. IIS (7.5) - 启用Windows Authentication
2. web.config:
<authentication mode="Windows" />
<identity impersonate="true"/>
<authorization>
<deny users="?"/>
</authorization>
以上配置,ASP.NET部分的集成验证可工作。Silverlight调用WCF会遇到异常,还需:
1. 配置Silverlight WCF custom binding httpTransport:
<binding name="mybinding" closeTimeout="00:05:00" openTimeout="00:05:00" receiveTimeout="00:05:00" sendTimeout="00:05:00"> <binaryMessageEncoding /> <httpTransport authenticationScheme="Negotiate" /> <!-- required by Windows Auth. Use "Negotiate" on Windows 2008/ Windows 7--> </binding>
MSDN文档严重有误,还好下面的评论给出了正解
2.配置WCF endpoint: 去掉mex endpoint