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

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

新規登録して質問してみよう
ただいま回答率
86.12%
WCF

WCFは、.NET Frameworkの提供する機能の一つ。サービス指向アプリケーション構築のためのフレームワークです。ネットワークを通して、異なるコンピュータ上で動くソフトウェア間の通信が可能になります。

C#

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

REST

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

解決済

WCFのテスト時エラーが出ます→「リモート サーバーから予期しない応答が返されました: (400) Bad Request。」

RI_KU
RI_KU

総合スコア24

WCF

WCFは、.NET Frameworkの提供する機能の一つ。サービス指向アプリケーション構築のためのフレームワークです。ネットワークを通して、異なるコンピュータ上で動くソフトウェア間の通信が可能になります。

C#

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

REST

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

1回答

0リアクション

0クリップ

5106閲覧

投稿2017/03/17 06:53

編集2017/03/17 08:17

■Visual Studo2010
■.netFramework3.5
////////////////////////////////_/

■PjStartStatusRestApp(サービス(Iサービスを実装)とIサービスが入っているプロジェクト)
対象フレームワーク.NET Framework3.5

■restSample(Form1.cs, App.configが配置されている)
対象フレームワーク.NET Framework3.5

■/pjRestWeb(webサイトかつweb.configが配置されている)
対象フレームワーク.NET Framework4.0

webサイトと対象フレームワークを合わせても変わりませんでした。
////////////////////////////////_/
【Form1.cs】
『int result = service.PjStrSttsUpdater(mode.Text, code.Text, すsubcode.Text);』の部分で掲題のエラーが発生します。
フォームのボタンを押したらテキストボックスの文字列を取得して、DBの更新結果をラベルに表示するだけの簡単な処理なので、フォームのボタンをポチポチ連打していたら突然発生しました。

C#

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using 【namespace】.PjStatusRestApp; using System.IO; using System.Runtime.Serialization; using System.ServiceModel.Activation; using System.ServiceModel.Web; using System.Web; using System.Diagnostics; namespace 【namespace】.restSample { public partial class Form1 : Form { public Form1() { InitializeComponent(); this.label1.Text = "return"; this.mode.Text = string.Empty; this.pjsbno.Text = string.Empty; this.pjcode.Text = string.Empty; this.labelReslt.Text = string.Empty; } private void button1_Click(object sender, EventArgs e) { try { // 20170313 UIに記述 var factory = new WebChannelFactory<IPjStartApplication>(new Uri(ConfigUtil.GetSISetting("PjStartApplication.Url"))); var service = factory.CreateChannel(); ******************************ココ********************** int result = service.PjStrSttsUpdater(mode.Text, code.Text, subcode.Text); ****************************************************** string resultMessage = string.Empty; if (result == 200) resultMessage = "正常終了"; else if (result == 400) resultMessage = "パラメータ不正"; else if (result == 401) resultMessage = "申請ステータスが同じ"; // 結果の表示 labelReslt.Text = resultMessage; // ここまで } catch (Exception ex) { // エラーだった場合はイベントログに内容を出力 LogWriter.CreateInstance().Write(LogLevel.Error, ex.Message, ex); } } } }

クライアント側(このフォームからテキストを送っています)
App.config

XML

<?xml version="1.0" encoding="utf-8"?> <configuration> <system.serviceModel> <client> <endpoint name="PjStartApplicationClientEndpoint" address="http://localhost:55723/【path】/PjStrSttsUpdater" binding="webHttpBinding" contract="【namespace】.PjStartApplication"/> </client> </system.serviceModel> </configuration>

サーバ側 web.config

XML

<?xml version="1.0" encoding="utf-8"?> <configuration> <system.web> <compilation debug="true" targetFramework="4.0"/> </system.web> <system.serviceModel> <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/> <services> <service name="【namespace】.PjStartApplication" behaviorConfiguration="NewBehavior"> <endpoint address="" behaviorConfiguration="ServiceBehavior" binding="webHttpBinding" bindingConfiguration="" contract="【namespace】.IPjStartApplication"/> </service> </services> <behaviors> <endpointBehaviors> <behavior name="ServiceBehavior"> <webHttp/> </behavior> </endpointBehaviors> <serviceBehaviors> <behavior name="NewBehavior"> <serviceMetadata httpGetEnabled="true"/> </behavior> </serviceBehaviors> </behaviors> <bindings/> </system.serviceModel> </configuration>

ブラウザを起動してテストしているわけではないですが、一応ブラウザのキャッシュクリアも試したのですが、ダメでした。

調べても有力な情報を見つけることができず一日詰まっております。。。

<<2017/03/17 17:09 追記>>
■Interface

C#

namespace 【namespace】.PjStatusRestApp { /// <summary> /// 状況更新サービス /// </summary> [ServiceContract] public interface IPjStartApplication { /// <summary> /// 状況更新 /// </summary> /// <param name="PjStrSttsUpdater"></param> [OperationContract] [WebInvoke( Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, //RequestFormat = WebMessageFormat.Json, //ResponseFormat = WebMessageFormat.Json, UriTemplate = "PjStrSttsUpdater")] int PjStrSttsUpdater(string mode, string code, string subcode); } }

■サービス

C#

namespace 【namespace】.PjStatusRestApp { [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)] public class PjStartApplication : IPjStartApplication { public int PjStrSttsUpdater(string mode, string code, string subcode) { { #region 更新処理 using (SqlConnection cnn = "Connection取得処理") { string connectionString = string.Empty; connectionString = "DB接続用文字列"; cnn.ConnectionString = connectionString; cnn.Open(); SqlCommand cmd = new SqlCommand(); cmd.Connection = cnn; cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = "[dbo].[PjStartStatusUpdate]"; cmd.Parameters.Clear(); cmd.Parameters.Add("@MODE", System.Data.SqlDbType.NVarChar).Value = mode; cmd.Parameters.Add("@CODE", System.Data.SqlDbType.NVarChar).Value = code; cmd.Parameters.Add("@SUBCODE", System.Data.SqlDbType.NVarChar).Value = subcode; // Return cmd.Parameters.Add("ReturnValue", System.Data.SqlDbType.Int); cmd.Parameters["ReturnValue"].Direction = System.Data.ParameterDirection.ReturnValue; // 実行 cmd.ExecuteNonQuery(); int returnValue = (int)cmd.Parameters["ReturnValue"].Value; // 戻り値の出力 // Debug.WriteLine(returnValue); return returnValue; #endregion } } } } }

以下のような質問にはリアクションをつけましょう

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

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

tamoto

2017/03/17 07:18

> ポチポチ連打していたら突然発生した気がします 気がしますじゃなくて、「連打すると」発生するのか、必ずしもそうではないのか、はっきりして下さい。仮に連打しなくても発生するのであれば、回答の内容がまるっきり変わると思いますよ。
RI_KU

2017/03/17 07:28

連打してたらいきなり発生しました。書き直します。ありがとうございます。
tamoto

2017/03/17 07:43

修正ありがとうございます。もう一つですが、「キャッシュクリアも試したのですが、ダメでした。」とあるので、連打による「不具合の再現性はある」ということで良いんですよね?だとすると、見た感じPjStrSttsUpdaterメソッド内部のほうに問題があると予想されます。根本的な解決をしたい場合はそちらの方に手を入れる必要があると思います。
RI_KU

2017/03/17 08:15

追記いたしました。インターフェースのコメントアウト部Request, ResponseFormat....もコメントアウトを、片方ずつ外す、両方外すなどして実行しましたが変わりませんでした。

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

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

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

WCF

WCFは、.NET Frameworkの提供する機能の一つ。サービス指向アプリケーション構築のためのフレームワークです。ネットワークを通して、異なるコンピュータ上で動くソフトウェア間の通信が可能になります。

C#

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

REST

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