1


1

私はASP.Net 3.5 WCFサービスを書きました、そして、私がこのプロジェクトを作成したとき、VSは私がそれと共に行くためにweb.configファイルを与えました。 これを行った後、アプリは接続文字列を完全に盲目にしているように見えます。アプリはさまざまなWeb対応形式でのSQL Server DBデータの再フォーマットおよび書き出しに大きく依存するため、大きな問題となります。

私がDB接続を備えたWCFサービスを取得するために見た参照のほとんどは、App.Configファイルに接続文字列を入れるようにあなたに伝えます、私はこれを避けることに熱心でした…​ 私は新しいapp.configを追加しようとするとストレートな設定ファイルが提供されている選択肢ではなく、2番目のWeb設定ファイルだけであるため、VS2008も同様です。

私はすでに1つの完全に良いweb.configファイルを持っているので、私のデータアクセスコードではそれを使うことができます。 私はおそらく本当に明白な何かが欠けていると思いますが:

ConfigurationManager.ConnectionStrings ["MyConnection"]。ConnectionString

web.configファイルで7つの接続文字列が完全に定義されているにもかかわらず、configurationmanagerのデバッグでは接続文字列が定義されていないと主張しても動作しません。 System.Configuration、System.Web、System.Web.Configurationのステートメントを使用しています。

プロジェクトがweb.configを参照するように設計されているように見えても、実際にはそうではありません。 現時点では通常のapp.configにアクセスすることもできないようです。

web.config内のこれらすべてのhttphandlersとエンドポイントをすべて言っても問題ないようです。 データ文字列を呼び出すときに特に接続文字列を定義すると、すべて正常に機能します。 特に問題があると思われるのは、設定ファイルのconnectionstringセクションです。

何かご意見は?

編集:

これはweb.configのConnectionStringsセクションの内容です(わずかに変更されています)。


私が他に何か言ったように、ファイルはそれが問題も不満もなしにするように見えるその義務の実行を援助するためにするべきである。

さらに編集:アプリケーションは、現在開発中ですので、それがIISを介してWeb上でホストされているでしょう、VSHOSTを介して実行しようとしています。

そして、はい、私はSystem.Configurationへの明示的なプロジェクト参照を持っています

更新:これをロックしようとするために私はこれまで使用してきたように、AppSettingから文字列としてConnectionStringを渡すことに挑戦しました

DataServiceContext dsc = new DataServiceContext( "接続文字列としての文字列");

AppSettingsも見えません。

4 Answer


2


はい…​ これは面白い。

私はブラウザを通して私のREST URIをテストしたいと思いました。 ブラウザに入力されたURIが正しいデータを返すことを確認するためだけに。

それを実行するには、ある種のプロキシWCFサーバーが必要であることがわかりましたが、サービスを実行する小さなコンソールアプリだけでうまくいきました。

wcfがIIS(またはこの場合はVSHOST)ホストサービスのweb.configではなく_Proxy’s_ configを使用していることがわかります。 そのため、System.Configurationを参照してそれを修正した場合は、app.configを作成し、関連するconnectionstringsセクションをコピーして、正しく機能するようにします。

いらいらします。

何らかの形で関連性があると私が思ったのであれば、Y’allはおそらくそれを解決していたでしょう。 しかし… バー

手助けしようとしている時間を無駄にしてくれてありがとう。


1


WCFはさまざまな種類のバインディング(HTTP、TCP、メッセージキュー、パイプなど)で動作するように設計されています。 従来のWebサービス(asmx)は常にH​​TTPを介して実行されています。 このため、デフォルトで、web.configファイルにアクセスすることはできません。

asp.netのHTTPContextを使用したい場合は、以下に示すように、ASP.NET互換モードをtrueに設定する必要があります。


より詳細な議論については このブログ投稿をご覧ください。


0


Webサーバーでは、 `WebConfigurationManager`を使う必要があります。 デフォルトのConfigurationManagerについて知らなかったことがない限り。


-1


お試しください。

System.Configurationを使用します。

または

System.Configuration.ConfigurationManager.ConnectionStrings ["MyConnection"]。ConnectionString