質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.52%

  • C#

    7112questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • REST

    137questions

    REST(Representational State Transfer)はwebアプリケーションの構築スタイルの一種です。HTTP GET/POSTによってリクエストを送信し、レスポンスはXMLで返されます。SOAPのようなRPCの構築と比べるとサーバからクライアントを分離することが出来る為、人気です。

  • WCF

    14questions

    Windows Communication Foundation

  • Intra-mart

    2questions

    Intra-martは、 NTTデータの独自フレームワークです。 JavaEEのSeasar2(SAStruts+S2JDBC)ベースであり、 オンプレミスではシステム基盤、クラウド上ではPaaSとして利用出来ます。

WCF Rest Service Applicationの実装について

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 583

RI_KU

score 16

解答がつかなかったためもう一度質問いたします。すみません。

■.netFramework 3.5(もちろん当プロジェクトも対象は.net3.5)
■VisualStudio 2010
■SQLServer2014
■SQLServer Management Studio

Intra-martから送られてきた引数を使用して、DBの値を更新するプロジェクトを作成することになりました。
しかし1年目のPGであり、かつhttpresponse, request??系の製造には携わったことがなく言語もC#と手詰まり状態です。

PUTのupdateメソッド文中に処理を記述すればいいのかなとは考えているのですが、記述後の接続方法が不明のため着手ができない状況です。

またネット上にも有益な情報がないため、頼れる場所がここしかありません。他力本願で申し訳ありませんが、よろしくお願いいたします。

下記に詳細を記します。

■実装したいこと
受け取った引数を使用してDBの値を一件更新。
【Intra-mart】
| ↑
引 HttpStatus
数 Code(正常:200, パラメータ不正:400, 異常:500,など)
↓  |
プログラム(今回の成果物)
| ↑
更 戻り
新 値
↓ |
【DataBase】
※更新はStoredProcedureで行う。

■引数(URLで送信されてくることは確実)
http://~~/{第1引数}/{第2引数}/{第3引数}
第1引数 : MODE
第2引数 : CODE
第3引数 : SUBCODE
※コード + サブコード で一意のデータになる。

■DB(例)
________________________
|CODESUBCODE| LIFEANDDEATH |MODE
|————————————————————————
|YAMADA|  00  | Dead |0
|—————————————————————————
|YAMADA|  01  | Dead |0
―――――――――――――――――――――――――

■更新例
第1引数:1  (1:「Living」or 2:「Die」or 3:「heaven」)
第2引数:YAMADA
第3引数:01
________________________
|CODE |SUBCODE| LIFEANDDEATH |MODE
|————————————————————————
|YAMADA| 00  | Dead |0
|—————————————————————————
|YAMADA| 01  | Living    |1
―――――――――――――――――――――――――
→第1引数で「1」が送信されてきたので、CODE+SUBに該当するデータの
LIFEANDDEATHを「Living」に, MODEを第1引数の値(1)で更新する

【Service1.svc.cs】

using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.ServiceModel.Activation;
using System.ServiceModel.Web;
using System.Text;

namespace WcfRestService6
{
    // NOTE: If you change the class name "Service1" here, you must also update the reference to "Service1" in the associated .svc file.
    // NOTE: By default, a new instance of the service is created for each call; change the InstanceContextMode to Single if you want
    // a single instance of the service to process all calls.    
    [ServiceContract]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
    public class Service1
    {
        // TODO: Implement the collection resource that will contain the SampleItem instances

        [WebGet(UriTemplate = ""), OperationContract]
        public List<SampleItem> GetCollection()
        {
            // TODO: Replace the current implementation to return a collection of SampleItem instances
            return new List<SampleItem>() { new SampleItem() { Id = 1, StringValue = "Hello" } };
        }

        [WebInvoke(UriTemplate = "", Method = "POST"), OperationContract]
        public SampleItem Create(SampleItem instance)
        {
            // TODO: Add the new instance of SampleItem to the collection
            throw new NotImplementedException();
        }

        [WebGet(UriTemplate = "{id}"), OperationContract]
        public SampleItem Get(string id)
        {
            // TODO: Return the instance of SampleItem with the given id
            throw new NotImplementedException();
        }

        [WebInvoke(UriTemplate = "{id}", Method = "PUT"), OperationContract]
        public SampleItem Update(string id, SampleItem instance)
        {
            // TODO: Update the given instance of SampleItem in the collection
            throw new NotImplementedException();
        }

        [WebInvoke(UriTemplate = "{id}", Method = "DELETE"), OperationContract]
        public void Delete(string id)
        {
            // TODO: Remove the instance of SampleItem with the given id from the collection
            throw new NotImplementedException();
        }

    }
}

【SampleItem.cs】

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;

namespace WcfRestService6
{
    // TODO: Edit the SampleItem class
    public class SampleItem
    {
        public int Id { get; set; }
        public string StringValue { get; set; }
    }
}
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • s8_chu

    2017/03/13 09:30 編集

    この質問は推奨していない質問の意図的に内容が抹消された質問に該当すると思いますが、なぜ質問の内容を大きく変更したのでしょうか?もしも質問の消去がしたいならば、teratail運営に削除リクエストを送信してはいかがでしょう。

    キャンセル

  • 退会済みユーザー

    2017/03/13 13:35

    複数のユーザーから「意図的に内容が抹消された質問」という意見がありました
    解決後に編集機能を用いて質問内容を改変し関係のない内容にしたり、内容を削除する行為は禁止しています。
    投稿していただいた質問は、後に他の誰かが困ったときに助けになる情報資産になると考えるからです。
    「質問を編集する」ボタンから編集を行い、他のユーザにも質問内容が見えるように修正してください。

  • RI_KU

    2017/03/13 14:28

    削除リクエストなんてあったのですね、ありがとうございます。送信してみます。

    キャンセル

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • C#

    7112questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • REST

    137questions

    REST(Representational State Transfer)はwebアプリケーションの構築スタイルの一種です。HTTP GET/POSTによってリクエストを送信し、レスポンスはXMLで返されます。SOAPのようなRPCの構築と比べるとサーバからクライアントを分離することが出来る為、人気です。

  • WCF

    14questions

    Windows Communication Foundation

  • Intra-mart

    2questions

    Intra-martは、 NTTデータの独自フレームワークです。 JavaEEのSeasar2(SAStruts+S2JDBC)ベースであり、 オンプレミスではシステム基盤、クラウド上ではPaaSとして利用出来ます。