2012-04-13 15 views
0

私は別のWCF RESTサービスと通信する必要があるWCF RESTサービスを持っています。WCFからWCFへの通信401、HttpClient

3つのウェブサイトがあります。私は、既定のWebサイトで両方のサービスを設定し、HttpClientを使用して(他に接続する場合

  • 既定のWebサイト
  • WEBSITE1
  • WEBSITE2

は、 )http://localhost/serviceを使用すると、すべてが問題ありません。

http://website1.domain.com/serviceでサービスにアクセスするには、HttpClientを使用してサービスにアクセスし、URI http://localhost/serviceを使用するのではなく、これらの2つのサービスを別々のWebサイトに移動する必要があります。

Iは例外を受け取った:

System.ArgumentOutOfRangeExceptionが:不正(401) 次のいずれかではない:OK(200)、作成され(201)、承認(202)、 NonAuthoritativeInformation(203 )、NoContent(204)、ResetContent (205)、(206)

私はこれが401で見ることができますが、ここで何が起こっているPartialContent?

ありがとうございます。

+1

あなたのHttpClientコード(設定/実行)を追加することができれば、それはあなたが問題を把握するうえで最も有用であろう。 –

答えて

0

私はこれがあなたのウェブサービスの設定に関係していると思います。新しいサービスのためにGET、POST、Put、DELETEハートビートコールを作成して、それをフィドラーからチェックするのが最善です。あなたが401を取得した場合、それはあなたのアプリのプールのアイデンティティが何かにアクセスできないことを意味するかもしれません。それを修正する

ステップ:

  1. 与えるユーザーの書き込み/変更/読み取り/実行/ ..あなたのWCFで同様の権利は、フォルダ
  2. を公開
  3. を統合し、.NET 4に、このサイトのアプリケーションプールを作成します。
  4. アプリケーションプールIDにこのユーザーは、
  5. を入れ有効に匿名モードを有効にするだけでなくheartbeaの

パートを動詞の削除設定します呼び出しをテストするために、あなたのサービスでトンクラス:

[DataContract] 
public class StatusInfo 
{ 
    [DataMember] 
    public string MachineName { get; set; } 

    [DataMember] 
    public string IpAddress{ get; set; } 

    [DataMember] 
    public string Methodname { get; set; } 

    public override string ToString() 
    { 
     return "Machinename:" + MachineName + " ;IP:" + IpAddress + "; Method:" + Methodname; 
    } 
} 

private void ResolveStatus(StatusInfo statusInfo,string methodname) 
    { 
     try 
     { 
      var context = System.ServiceModel.OperationContext.Current; 

      RemoteEndpointMessageProperty property = 
       (RemoteEndpointMessageProperty) 
       context.IncomingMessageProperties[RemoteEndpointMessageProperty.Name]; 


      statusInfo.IpAddress = property.Address; 
      statusInfo.MachineName = Environment.MachineName; 
      statusInfo.Methodname = methodname; 

     }catch(Exception ex) 
     { 

     } 
    } 
/// <summary> 
    /// create task 
    /// </summary> 
    /// <param name="taskwrapped"></param> 
    [WebInvoke(Method = "POST", UriTemplate = "", RequestFormat = WebMessageFormat.Json, 
     ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)] 
    public StatusInfo postcall() 
    { 
     StatusInfo statusInfo = new StatusInfo(); 
     logger.Trace(Tagname + "postcall"); 
     ResolveStatus(statusInfo, "POST"); 
     return statusInfo; 

    } 


    /// <summary> 
    /// edit task 
    /// </summary> 
    [WebInvoke(Method = "PUT", UriTemplate = "", RequestFormat = WebMessageFormat.Json, 
       ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)] 
    public StatusInfo Edit() 
    { 
     StatusInfo statusInfo = new StatusInfo(); 
     logger.Trace(Tagname + "Edit"); 
     ResolveStatus(statusInfo, "PUT"); 
     return statusInfo; 

    } 

    //delete request with taskid 
    [WebInvoke(Method = "DELETE", UriTemplate = "", RequestFormat = WebMessageFormat.Json, 
    ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)] 
    public StatusInfo DeleteCall() 
    { 
     StatusInfo statusInfo = new StatusInfo(); 
     logger.Trace(Tagname + "Edit"); 
     ResolveStatus(statusInfo, "DELETE"); 
     return statusInfo; 

    } 


    //delete request with taskid 
    [WebInvoke(Method = "DELETE", UriTemplate = "/{recordid}", RequestFormat = WebMessageFormat.Json, 
    ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)] 
    public StatusInfo DeleteCallWithParam(string recordid) 

    { 
     StatusInfo statusInfo = new StatusInfo(); 
     logger.Trace(Tagname + "Edit"); 
     ResolveStatus(statusInfo, "DELETE/"+recordid); 
     return statusInfo; 

    } 



enter code here 
0

私は例外を受け取った: "I" である

? Webサービスやその他のクライアントの1つ?

私が物事を正しく理解しているのであれば、それは応答の範囲を期待していると思われる受信側です。401 ではなく、のいずれかです。応答の "この範囲"を期待するエラーチェックコードで、X(と401はこれらのいずれでもないか、x応答を考慮する "デフォルト"のメソッドはありません)。

前記、401は、そう

.... ServiceAuthorizationManager可能及び/又は「I」は、最初の場所で401応答を引き起こすことによって満たされていない場所で同様の設定を確認認証エラーであります

Hth ...

関連する問題