Hi guys,
I think I have an interesting one. I have been reading many, many discussions on this topic and altering my code and have found an interesting quirk. Below are the most useful discussions I've read and taken ideas from.
http://forums.lhotka.net/forums/p/12036/56156.aspx
http://forums.lhotka.net/forums/p/8931/42494.aspx
I have a .NET 4.5, CSLA 4.5.40, Silverlight 5, IIS 7.5 application that has been working terrifically locally but I've been trying to deploy to a webserver. My AppPool settings have gone through every possible permutation but I have settled with Integrated and Identity: LocalSystem. If I change the identity it gives similar results as mentioned below but with a different system account. IIS site authentication only has ASP .NET Impersonation and Windows Authentication Enabled.
Here is the web.config with all the tags that have been identified as required:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="EventLogName" value="GreyDev" />
<add key="CslaAuthentication" value="Windows"/>
<add key="CslaWriter" value="Csla.Serialization.Mobile.CslaBinaryWriter, Csla" />
<add key="CslaReader" value="Csla.Serialization.Mobile.CslaBinaryReader, Csla" />
</appSettings>
<connectionStrings>
PRIVATE :)
</connectionStrings>
<system.web>
<compilation debug="true" targetFramework="4.5" />
<authentication mode="Windows" />
<identity impersonate="true" />
<pages controlRenderingCompatibilityVersion="4.0"/>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
</system.webServer>
<system.serviceModel>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true" />
<services>
<service behaviorConfiguration="WcfPortalBehavior" name="Business.Compression.CompressedHost">
<endpoint binding="basicHttpBinding" contract="Csla.Server.Hosts.Mobile.IWcfPortal" bindingConfiguration="BasicHttpBinding_IWcfPortal" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="WcfPortalBehavior">
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceAuthorization impersonateCallerForAllOperations="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IWcfPortal"
maxReceivedMessageSize="2147483647"
maxBufferPoolSize="2147483647"
maxBufferSize="2147483647" >
<readerQuotas maxBytesPerRead="2147483647"
maxArrayLength="2147483647"
maxStringContentLength="2147483647"
maxNameTableCharCount="2147483647"
maxDepth="2147483647" />
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows" />
</security>
</binding>
</basicHttpBinding>
</bindings>
</system.serviceModel>
</configuration>
I think I just saw an older thread about this. I believe the solution was to change your apppool to run as network service, not system.
Sadly I've tried every possible appPool setting and none of them change the behavior. The only difference by changing the appPool setting is that when it fails to alias the windows user, it shows the service account rather than the system account.
Copyright (c) Marimer LLC