使用表单身份验证和授权时WCF休息Web服务请求错误

时间:2012-03-01 11:21:35

标签: wcf web-services security forms-authentication

使用表单身份验证和授权时,我从WCF Rest Web服务收到以下请求错误。没有身份验证和授权,它工作正常: -

“服务器在处理请求时遇到错误。请参阅服务帮助页面以构建对服务的有效请求。”

它内置.net 4所以没有.svc文件,这里是服务代码: -

        namespace WcfRestService1
{

    [ServiceContract]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]

    public class Service1
    {


        [OperationContract]
        [WebGet(ResponseFormat = WebMessageFormat.Json)]
        public string GetHelloMessage()
        {
            return ("hello from web service");

        }

    }
}

以下是网络配置代码: -

 <configuration>




  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>

  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
      <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    </modules>
  </system.webServer>



  <system.serviceModel>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
    <standardEndpoints>
        <standardEndpoint name="" helpEnabled="true" crossDomainScriptAccessEnabled="true" defaultOutgoingResponseFormat="Json" automaticFormatSelectionEnabled="true"/>
      </webHttpEndpoint>
    </standardEndpoints>
  </system.serviceModel>



    <system.web>
            <authentication mode="Forms">
                <forms defaultUrl="Service1" timeout="20"
                     ticketCompatibilityMode="Framework40"
                     loginUrl="login.aspx" name=".Mobile-Rest-Api" cookieless="UseCookies"/>
            </authentication>


        <authorization>
            <deny users="?" />

            <allow users="*"/>

        </authorization>
        <!--<authentication mode="None"/>-->
        </system.web>



    <location path="login">
        <system.web>
            <authorization>
                <allow users="*" />
            </authorization>
        </system.web>
    </location>


</configuration>

对此提出任何帮助都会很棒,提前谢谢。

1 个答案:

答案 0 :(得分:2)

问题是您使用的是不支持服务调用的身份验证方法。

当用户访问网站时使用表单身份验证,如果用户未经过身份验证,则会将其定向到登录表单,在该表单中填写用户名和密码。

当某个服务正在进行呼叫时,该服务会获得一个无法处理的重定向响应,因此会出错。

您需要选择其他身份验证方法。