由于我们BizTalk项目中经常会需要用到BAS,BAM等,(如:RosettaNet等),所以需要安装配置WSS,一般默认情况会提升Default Web Site(80)站点, 但是如果有Asp.Net WebSite 需要Host 在默认站点80 里的时候就会带来一些身份验证上的困惑,经常会导致身份验证不正常,如
<authentication mode="Windows" />
<authorization>
<allow users="mailto:[email protected]"/>
<allow users="asiapacific\cnmaqi1"/>
<deny users="*"/>
</authorization>--------------------
<location path="TIHandling.asmx">
<system.web>
<authorization>
<allow users="?"/> <!--<allow users="*"/>-->
</authorization>
</system.web>
</location>
或者在使用Asp.Net Login控件时候也有同样的问题
<authentication mode="Forms">
<forms name=".ASPXAUTH"
loginUrl="Login.aspx"
protection="All"
timeout="30"
path="/"
requireSSL="false"
slidingExpiration="true"
defaultUrl="Default.aspx"
cookieless="UseDeviceProfile"
enableCrossAppRedirects="false"/>
</authentication>
最初的时候百思不得其解,后来实在不行就索性换了一个站点,但是可以确定是由于WSS造成的, 在Default Web Site(80) 站点根目录下就会有一个sharepoint 的 web.config,根据msdn官方说法,web.config 有继承关系,还有一个必须要清楚的是asp.net 身份验证是在httpModules 里操作的, 查看sharepoint 的web.config,发现了问题,如下:
<httpModules>
<clear/>
<add name="OutputCache" type="System.Web.Caching.OutputCacheModule"/>
<add name="WindowsAuthentication" type="System.Web.Security.WindowsAuthenticationModule"/>
<!-- <add name="Session" type="System.Web.SessionState.SessionStateModule"/>-->
</httpModules>
比对默认的web.config(C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG\web.config)
对自己站点下的web.config 做如下调整, 首先清除所有的httpModules,重新添加标准的httpModules:
<system.web>
...............
<httpModules>
<clear/>
<add name="OutputCache" type="System.Web.Caching.OutputCacheModule" />
<add name="Session" type="System.Web.SessionState.SessionStateModule" />
<add name="WindowsAuthentication" type="System.Web.Security.WindowsAuthenticationModule" />
<add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule" />
<add name="PassportAuthentication" type="System.Web.Security.PassportAuthenticationModule" />
<add name="RoleManager" type="System.Web.Security.RoleManagerModule" />
<add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule" />
<add name="FileAuthorization" type="System.Web.Security.FileAuthorizationModule" />
<add name="AnonymousIdentification" type="System.Web.Security.AnonymousIdentificationModule" />
<add name="Profile" type="System.Web.Profile.ProfileModule" />
<add name="ErrorHandlerModule" type="System.Web.Mobile.ErrorHandlerModule, System.Web.Mobile, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</httpModules>
.................
至此Login控件等身份验证工作正常.
Tips:“*”表示所有用户;“?”表示匿名用户;