2012-03-01 4 views
0

フォーム認証と承認を使用すると、WCF Rest Webサービスから次の要求エラーが発生します。これは、認証と承認なしで正常に動作します: -フォーム認証と承認を使用するとWCF Rest Web Service Requestエラーが発生する

「サーバーが要求の処理中にエラーが発生したサービスに有効な要求を構築するためのサービスのヘルプページをご覧ください。。」 .NET 4でそう何.SVCファイルを構築していない

その、ここではサービスコードがある: - :

<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> 

上の任意のヘルプ - ここ

 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"); 

     } 

    } 
} 

は、Web構成コードですこれは素晴らしいことです、事前に感謝します。

答えて

2

問題は、サービスコールをサポートしていない認証方法を使用していることです。ユーザーは、彼は、ユーザー名とパスワードを記入したログインフォームに向けられている認証されない場合、ユーザーは、サイトにアクセスしているとき

フォーム認証が使用されています。

サービスがコールしているとき、サービスはリダイレクト応答を取得します。リダイレクト応答は処理できないため、エラーになります。

異なる認証方法を選択する必要があります。

+0

私はcrossDomainScriptAccessEnabled = "true"を削除すると認証がうまくいくと思いますが、すべて動作しますが、別のドメインからのajax呼び出しでサービスにアクセスできなくなります。これはサービスのポイントです。ここをクリックしてください: - http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/0ef77f50-662a-49c8-8dd0-8b2804f78d99 – user1242444

+0

JSONPを使用する必要があるajaxクロスドメインを使用する –

+0

はい私は知っていますJSONPを使用する必要があります。上記のリンクを読むと、認証を使用するときにJSONPが生成されますが、これはセキュリティ上の制限であるバグではありません。したがって、JSONP呼び出しを許可するすべてのサービスは公開されている必要があります。 – user1242444

関連する問題