我的网站启用了Windows Authentication
和Anonymous Authentication
,数据库连接也使用了Windows身份验证(基于用户登录)。
我打电话给AJAX-Enabled WCF Service
,它是匿名验证的。
IE上一切正常。但是当我用Firefox打开它时,却抛出异常:
用户'NT AUTHORITY \ ANONYMOUS LOGON'登录失败。
<authentication mode="Windows">
<forms loginUrl="~/Account/Login.aspx" timeout="2880" />
</authentication>
<identity impersonate="true" />
<authorization>
<deny users="?" />
</authorization>
.....
.....
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<!--<behavior name="metadataBehavior">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="false" />
</behavior>-->
<!-- Step 2. Add a new behavior below.-->
<behavior name="metadataBehavior">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="false"/>
<!-- Step 3. Add a <serviceDebug> element -->
<serviceDebug includeExceptionDetailInFaults="true" />
<dataContractSerializer maxItemsInObjectGraph="2147483647"/>
<serviceAuthorization/>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="Mycompany.SGACostReduction.EditInitiativesAspNetAjaxBehavior">
<dataContractSerializer maxItemsInObjectGraph="2147483647"/>
<webHttp helpEnabled="true"/>
<enableWebScript />
</behavior>
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="false" />
<standardEndpoints>
<webHttpEndpoint>
<standardEndpoint automaticFormatSelectionEnabled="false"
helpEnabled="true"
defaultOutgoingResponseFormat="Json"
name=""/>
</webHttpEndpoint>
</standardEndpoints>
<services>
<service name="Mycompany.SGACostReduction.EditInitiatives" behaviorConfiguration="metadataBehavior">
<host>
<baseAddresses>
<add baseAddress="http://localhost:57771/EditInitiatives.svc" />
</baseAddresses>
</host>
<endpoint address="" behaviorConfiguration="Mycompany.CostReduction.EditInitiativesAspNetAjaxBehavior" binding="webHttpBinding" bindingConfiguration="webBinding" contract="Alixpartners.SGACostReduction.EditInitiatives" >
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<bindings>
<webHttpBinding>
<binding name="webBinding">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows" proxyCredentialType="Windows" />
</security>
</binding>
</webHttpBinding>
</bindings>
</system.serviceModel>
答案 0 :(得分:0)
我认为此页面可以帮助您
每当您尝试通过javascript或jquery调用跨域WCF服务时,它对不同浏览器的行为都不同。当您想使用jquery / javascript或ajax对跨域wcf服务或普通服务执行“POST”或“GET”请求时,浏览器实际上会向您的wcf方法发送一个“OPTIONS”动词调用,这在wcf方法中没有提及属性