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

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

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

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

C#

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

Visual Studio 2010

Microsoft Visual Studio 2010はMicrosoftが提供している統合開発環境(IDE)です。

IIS

IIS(Internet Information Services)はマイクロソフト社によって開発されたwebサーバーです。Windows上で動作します。

REST

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

Q&A

解決済

1回答

8654閲覧

WCFServiceにlocalhost以外(IPアドレス等)で接続したい。

RI_KU

総合スコア24

WCF

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

C#

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

Visual Studio 2010

Microsoft Visual Studio 2010はMicrosoftが提供している統合開発環境(IDE)です。

IIS

IIS(Internet Information Services)はマイクロソフト社によって開発されたwebサーバーです。Windows上で動作します。

REST

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

0グッド

0クリップ

投稿2017/03/22 02:16

編集2017/03/22 06:44

■Visual Studio 2010で開発を行っています。
WCFServiceに現在
http://localhost:ポート番号/SampleService/引数/引数/引数
で接続してサービスを呼び出して処理を行うことは可能なのですが、

localhostをIPアドレスに変えて動くようにするにはどうすればよいのかがわからないです。
例:http://255.255.255.255:8080/SampleService/引数/引数/引数
一応サーバ側のコードも載せておきます。

■Global.asax

C#

1<%@ Application Language="C#" %> 2 3<script runat="server"> 4 5 void Application_Start(object sender, EventArgs e) 6 { 7 // アプリケーションのスタートアップで実行するコードです 8 System.Web.Routing.RouteTable.Routes.Add( 9 new System.ServiceModel.Activation.ServiceRoute( 10 "SampleService", new System.ServiceModel.Activation.WebServiceHostFactory(), typeof(【namespace】.SqmpleService))); 11 } 12 void Application_End(object sender, EventArgs e) 13 { 14 // アプリケーションのシャットダウンで実行するコードです 15 16 } 17・・・・・・・・・・・・ 18・・・・・・・・・ 19・・省略・・・ 20・・・・・・ 21・・・・ 22</script> 23

■web.config

XML

1<?xml version="1.0" encoding="utf-8"?> 2<configuration> 3 <system.web> 4 <compilation debug="true" targetFramework="4.0"/> 5 </system.web> 6 7 <system.serviceModel> 8 <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" /> 9 10 <services> 11 <service name="【namespace】.sampleService" behaviorConfiguration="NewBehavior"> 12 <endpoint address="" 13 behaviorConfiguration="ServiceBehavior" 14 binding="webHttpBinding" 15 bindingConfiguration="" 16 contract="【namespace】.ISampleService"/> 17 </service> 18 </services> 19 20 <behaviors> 21 <endpointBehaviors> 22 <behavior name="ServiceBehavior"> 23 <webHttp/> 24 </behavior> 25 </endpointBehaviors> 26 <serviceBehaviors> 27 <behavior name="NewBehavior"> 28 <serviceMetadata httpGetEnabled="true"/> 29 </behavior> 30 </serviceBehaviors> 31 </behaviors> 32 33 <bindings/> 34 </system.serviceModel> 35</configuration>

■SampleService.svc

C#

1<%@ ServiceHost Service="【namespace】.SampleService"%>

申し訳ありません、よろしくお願いいたします。

SampleServiceとISampleServiceは現状localhostからの接続で問題なく動作しているためコードは省略いたします。

【追記】
イメージ説明

【テンプレート】
イメージ説明

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

開発マシンのブラウザからローカル IIS の ASP.NET でホストされている WCF サービスを呼び出すのなら IP アドレスは 127.0.0.1 になるはずです。

ただ、それで呼び出せるかは IIS の設定によりますが。

投稿2017/03/22 02:33

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

RI_KU

2017/03/22 02:37

ありがとうございます!!!127.0.0.1で呼び出すことができました! しかし申し訳ありません、私の説明不足でした。 IPアドレスで接続できるようにして、同じLANで接続されている別PCのWebブラウザから接続したいです。
退会済みユーザー

退会済みユーザー

2017/03/22 03:22

Web サーバーのプライベート IP アドレスを指定すればいいのでは? Web サーバーの IIS でのサイト/アプリケーションの設定、ファイアウォールの穴あけができていればそれで接続できるはずです。
RI_KU

2017/03/22 04:49 編集

ipconfigで調べたプライベートIPアドレスを指定して接続が拒否されましたというメッセージが返ってきているということは、ファイアウォールがおかしいということですね。 ありがとうございます、設定を調べてやってみます。 【追記】 手取り足取りで申し訳ありません。 http://IPアドレス←でデフォルトのWebページが表示されました。しかし http://IPアドレス:ポート番号/SampleService/引数/~~ とやると「404.0 - Not Found」が出てしまいました。 ポート番号が間違っているのかなと思うのですが、ポート番号はどこを調べたらわかるのでしょうか。 IISマネージャ→Default Web Siteを右クリック→バインドの編集に書いてあるポート番号80を指定して http://IPアドレス:80/SampleService/引数/~~としても404でした・・・
退会済みユーザー

退会済みユーザー

2017/03/22 05:41

今提供されている情報では、WCF をホストする ASP.NET Web アプリの IIS 上での設定に問題があるのではないかなぁ・・・という想像ぐらいしかできません。 ASP.NET Web アプリに Default.aspx とかの普通のページがあれば、それを要求してみたらどうなりますか?
RI_KU

2017/03/22 05:55 編集

【WCF】SampleService.cs, ISampleService.cs 【webサイト側】投稿文に載せてあるコード3つ のみなのでDefault.aspxは今回ないんですよね。 http://IPアドレス:80 でデフォルトのウェブページは出るので、IISへのWCFのホスティングなど必要なのでしょうか? http://127.0.0.1:仮想ポート番号/SampleService/,,/,,/,,でサービスを呼んで処理を行えたのでホスティングはされているものと思い込んでいましたが,,,
RI_KU

2017/03/22 06:10

詳細情報: このエラーは、ファイルまたはディレクトリがサーバー上に存在しないことを意味します。ファイルまたはディレクトリを作成し、もう一度要求してください。 詳細情報の表示 » とブラウザに出ているので、サービスが配置されていないのが原因でしょうか。
raichi

2017/03/22 06:13

同じLANで接続されている別PCのhostsに 接続先IP localhost って試しに書いてみてみたら?
RI_KU

2017/03/22 06:19

自分の環境でhttp://プライベートIPアドレス:ポート/SampleService/引数/引数/引数 をブラウザで入力してWCFServiceが呼べないので別PCからの接続はそこが接続できてからかなと思っております。申し訳ありません。
退会済みユーザー

退会済みユーザー

2017/03/22 06:28

Default.aspx がなければ追加して試してみてください(まず開発環境で試してから)。同じ結果(404 エラー)になるのではないかと想像してます。同じ結果になれば、やはり Web アプリの IIS 上での設定が怪しいと思われます。 もし、問題なく Default.aspx が表示されれば、WCF の何かに起因する問題(Web アプリの IIS 上の設定ではなく)ということが切り分けられると思います。 ちなみに、http://プライベート IP/ で表示されるのは wwwroot 直下にある iisstart.htm だと思いますが、それが表示されたからと言って Web アプリがきちんと設定されていることにはなりません。
退会済みユーザー

退会済みユーザー

2017/03/22 06:35

その前に、今さらながらですが、その WCF サービスは Visual Studio でどのテンプレートを使ってどのように作ったのかを聞くのが先でした。それを書いてください。
RI_KU

2017/03/22 06:37

http://localhost:8080/webサイトの仮想パス/Default.aspx →表示される http://IPアドレス:80/webサイトの仮想パス/Default.aspx →404.0 not found http://IPアドレス:80/Default.aspx →404.0 not found そしておっしゃる通りデフォルトで表示されるページはwwwroot直下のhtmファイルです。 WebアプリのIIS上の設定がまずそうですね。。。 紛らわしいかもしれないので、投稿本文にwebサイトの仮想パスとポート番号を画像でのせます。
RI_KU

2017/03/22 06:43

本文に選択したテンプレートの画像をのせました。
RI_KU

2017/03/22 06:55

申し訳ありません。本文に載せた画像で選んでいるテンプレートで作成したつもりでしたが、 ソリューションエクスプローラにできるアイコンが違うことから、Windowsフォームアプリケーションで作ったものと思います。 プロジェクト右クリック→プロパティ→アプリケーションタブ→出力の種類:クラスライブラリにしてあります。
退会済みユーザー

退会済みユーザー

2017/03/23 01:21

質問者さん自身がどうテンプレートでどのように作ったか不明ということですと想像で答えるほかなく、何とも回答しづらいのですが・・・ 開発環境では問題なくブラウザからアクセスして期待した結果が得られるということであれば、多分 WCF 単独のアプリを IIS がホストするようなテンプレートで作ったのではないかと思います。 そして開発環境では自動的に IIS Express 上で実行されるので期待した結果が得られたが、他のマシンから開発マシンにアクセスしたら 404 エラーになったということだと想像してます。 他のマシンから開発マシンに http://開発マシンの IP/ を要求して iisstart.htm が表示されたのであれば、開発マシンの IIS は動いていてファイアウォールも問題ないのだろうと思います。 ただし、WCF サービスを要求して期待した結果を得るには、IIS 上で WCF を動くようにする設定が必要だと思います。 そのあたりも設定はどうしたのですか?
RI_KU

2017/03/23 01:32

SurferOnWwwさんの想像通り単独のアプリをIISがホストしており、おっしゃる通りIIS上でWCFを動くように設定する必要があるようでした。 今回はlocalhostで繋がることが確認できれば、リリース時にモジュールをIISに配置してくれることになりました。 長い時間お手を煩わせてしまい申し訳ありませんでした。 ソースコードが手元にない状態で的確に助言をくださるteratailの皆様は本当に尊敬できますし、私もそうなりたいです。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問