2011-01-19 11 views
0

基本的に私は自分自身がPC上でホストされている残りのWebサービスを持っていて、Windows 7の電話機から画像をアップロードします。これはたくさんのことが私には新しいものなので、私が行くにつれて学びました。私の問題は、Webサービスに画像をアップロードできないことです。
以下は私が使用しているコードです。Windows Phone 7のヘルプ画像がwebserviceにアップロードされています

私はWi-Fi接続でテストしていますが、動作しています。私はバイオリンを使用していると私は、要求が、私は一種のこの作業を取得することができエミュレータを使用して携帯電話/ PCへとから

を行く見ることができます (私は200のコードを取得し、ディスクにイメージを書き込むことができます)

実際のデバイスで投稿しようとすると、私は400応答コードを返します。

私が得ることができるどんな助けも素晴らしいだろう。私はこのバグを解決しようとしている私の車輪を回転させている。

//webserice code 
[ServiceContract] 

public interface ItestService 
{ 
    [OperationContract, WebInvoke(Method = "POST", UriTemplate = "PostTest/{targetID}")] 
    string PostTest(string targetID, Stream image); 
} 

//from service def 

public string PostTest(string targetID, System.IO.Stream image) 
{ 
    string id = WriteImageToDisk(image, targetID); 
    return id; 
} 

//phone code 
private void SendImage1() 
{ 
string address = ServiceURI + "/PostTest"; 
Uri baseAddress = new Uri(address); 
var req = HttpWebRequest.Create(baseAddress) as HttpWebRequest; 
req.Method = "POST"; 
req.ContentType = "image/jpeg"; 
req.BeginGetRequestStream(SendImagePost_Callback, req); 
} 

private void SendImagePost_Callback(IAsyncResult result) 
{ 
    try 
    { 
    var req = result.AsyncState as HttpWebRequest; 

    using (var strm = req.EndGetRequestStream(result)) 
    { 
     var bytesToWrite = RawContent(); 
     strm.Write(bytesToWrite, 0, bytesToWrite.Length); 
     strm.Flush(); 
    } 

    req.BeginGetResponse(SendImageResponce_Callback, req); 
    } 
    catch (Exception ex) 
    { 
    DisplayMessage(this.txtError, ex.Message); 
    } 

} 

private void SendImageResponce_Callback(IAsyncResult result) 
{  
    try 
    { 
     var req = result.AsyncState as HttpWebRequest; 
     var strm = resp.GetResponseStream(); 
     var reader = new StreamReader(strm); 

     DataContractSerializer ser = new DataContractSerializer(typeof(string)); 
     string id = ser.ReadObject(strm).ToString(); 
     DisplayMessage(this.txtAction, id); 
    } 
    catch (Exception ex) 
    { 
     DisplayMessage(this.txtError, ex.Message); 
    } 
} 
+0

こんにちは、それが動作するかどうかの条件を明確にすることはできますか?あなたは、Wi-Fiで動作し、潜在的に同じ状態のデバイスではないと言いました。 –

+0

ご返信ありがとうございます。アプリがエミュレータからテストされると、すべて正常に動作します。私はGETコールを作成し、電話からサービスに画像をPOSTすることができます。しかし、私はデバイスにアプリケーションを展開し、それをテストする画像のポストは動作しません。デバイス上でアプリケーションをテストすると、私は接続があることを確認することができます。私はサービスへのGETコールをすべてうまくいくことができますが、デバイスからサービスにイメージをPOSTしようとすると失敗します。 – user503926

答えて

0

解決する接続の問題があるようです。 IPによるローカルサービスへのアクセスを試み、ファイアウォールの傍受がないことを確認してください。

+0

私のテストによると、私は接続の問題はありません。私はファイアウォールの有無にかかわらずテストしました。電話アプリは、大規模な画像ファイルを取得するサービスを含め、サービスにいくつかの「GET」コールをきれいにします。私は大きなテキストメッセージを送信するPOST呼び出しとこれはうまく動作します。私が抱えている唯一の問題は、電話機から画像をPOSTしようとするときです。 – user503926

関連する問題