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

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

新規登録して質問してみよう
ただいま回答率
85.50%
C#

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

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

解決済

1回答

2918閲覧

ASP.netでDBと接続できない。

sakaka

総合スコア15

C#

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

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

0クリップ

投稿2022/08/01 04:29

編集2022/08/04 08:08

前提

ODP.NETを用いてWEBページの開発をしております。以下のエラーが出て対応できないでいます。
ご存じの方がいましたら、ご教授よろしくお願いします。

実現したいこと

DBと接続

発生している問題・エラーメッセージ

トレース 場所 OracleInternal.ConnectionPool.PoolManager`3.Get(ConnectionString csWithDiffOrNewPwd, Boolean bGetForApp, OracleConnection connRefForCriteria, String affinityInstanceName, Boolean bForceMatch) 場所 OracleInternal.ConnectionPool.OraclePoolManager.Get(ConnectionString csWithNewPassword, Boolean bGetForApp, OracleConnection connRefForCriteria, String affinityInstanceName, Boolean bForceMatch) 場所 OracleInternal.ConnectionPool.OracleConnectionDispenser`3.Get(ConnectionString cs, PM conPM, ConnectionString pmCS, SecureString securedPassword, SecureString securedProxyPassword, OracleConnection connRefForCriteria) 場所 Oracle.ManagedDataAccess.Client.OracleConnection.Open() 例外がスローされました: 'Oracle.ManagedDataAccess.Client.OracleException' (Oracle.ManagedDataAccess.dll の中) ORA-12154: TNS: 指定された接続識別子を解決できませんでした

該当のソースコード

c#

1using Oracle.ManagedDataAccess.Client; 2using System; 3using System.Collections.Generic; 4using System.Data; 5using System.Linq; 6using System.Web; 7using System.Web.Mvc; 8 9namespace Web_Pra.Controllers 10{ 11 public class HomeController : Controller 12 { 13 14 public ActionResult Index() 15 { 16 return View(); 17 } 18 19 public ActionResult About() 20 { 21 ViewBag.Message = "Your application description page."; 22 23 return View(); 24 } 25 26 27 public ActionResult Contact() 28 { 29 try 30 { 31 using (OracleConnection conn = new OracleConnection()) 32 { 33 conn.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["Web_Pra.Properties.Settings.設定"].ConnectionString; 34 conn.Open(); 35 } 36 } 37 catch (Exception ex) 38 { 39 Console.WriteLine(ex.Message.ToString()); 40 } 41 42 return View(); 43 } 44 } 45}

参考 https://itsakura.com/csharp-oracle

試したこと

イメージ説明
web.configの設定

補足情報(FW/ツールのバージョンなど)

visual stadio2017
windows10
oracle19c
.net faramework 4.7.2

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

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

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

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

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

sakaka

2022/08/01 05:09

コンソールアプリのコードを参考にしました。WEBページを作りたいと思っています。誤解を生んで申し訳ございません。
sakaka

2022/08/01 05:55

@KOZ6.0さん コンソールアプリ作成時には、このようなエラーは出ませんでした。WEBだと他に設定するところがあるのでしょうか?
退会済みユーザー

退会済みユーザー

2022/08/01 06:09

> コンソールアプリ作成時には、このようなエラーは出ませんでした。 質問に書いてある「該当のソースコード」でエラーが出たわけではないと言ってますか? であれば、エラーが出たコードに書き直してください。
sakaka

2022/08/01 06:24

未完成のソースコードですが、編集いたしました。 よろしくお願いいたします。
KOZ6.0

2022/08/01 14:37 編集

>コンソールアプリ作成時には、このようなエラーは出ませんでした。WEBだと他に設定するところがあるのでしょうか? コンソールアプリの場合は、app.config、ASP.NET の場合は web.config に定義が必要です。 tnsnames.ora の場所(TNS_ADMIN)、または接続先の情報を直接定義(dataSourcesセクション)することになります。 詳しくは前のコメントで紹介した URL を見てください。
KOZ6.0

2022/08/01 14:26

面倒だったら、接続文字列の DataSource に IPアドレス/SID名 (例: 192.168.1.1/ORCL)を入れてください。
guest

回答1

0

ベストアンサー

接続文字列は web.config にありますか? あなたのコードの、

conn.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["Web_Pra.Properties.Settings.設定"].ConnectionString;

で取得できていないからだと思いますが。

質問を書き直す前のコンソールアプリのコードでは問題なかったそうですが、その時使っていた、

conn.ConnectionString = "User ID=hr; Password=hr; Data Source=localhost/XE";

に書き換えるとどうなりますか?

投稿2022/08/01 07:18

編集2022/08/01 07:23
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

sakaka

2022/08/01 07:24

はい、web.configにあります。値も取得できています。
退会済みユーザー

退会済みユーザー

2022/08/01 07:27

> web.configにあります。値も取得できています。 その接続文字列と、質問を書き直す前のコンソールアプリのコードでは問題なかったという接続文字列と同じですか?
sakaka

2022/08/01 07:30

前のに書き換えても同じエラーが起きました。
退会済みユーザー

退会済みユーザー

2022/08/01 07:49 編集

ASP.NET アプリは Visual Studio から実行して IIS Express 上で動かしているのか(ワーカープロセスは Visual Studio を立ち上げたユーザーのアカウント)、IIS 上で動かしているのか(ワーカープロセスは権限の低いアプリケーションプール ID)どっちですか? 後者の場合、TNSNAMES.ORA ファイルに読み取り権限がなくてエラーになるということがあると思います。 あと、 https://blog.verygoodtown.com/2012/04/aspnet-oracle-tns-error/ という話があるそうですが、コンソールアプリでは問題なく動くとのことなので、これは違うかも。
sakaka

2022/08/01 08:03

恐らく前者だと思います。IISの設定は特に触っておりません。
sakaka

2022/08/01 08:23

すいません。TNSPING .exeがないので確かめれらないです。DBは仮想のサーバーにあります。
sakaka

2022/08/03 14:44

自己解決しました。原因はOracle clientのバージョンが違うことによる、エラーでした。
sakaka

2022/08/03 14:44

多くの御意見ありがとうございました。
退会済みユーザー

退会済みユーザー

2022/08/03 23:08

> 原因はOracle clientのバージョンが違うことによる、エラーでした 変ですね。 コンソールアプリでは問題なかったと言ってましたよね。また、質問に貼ってある画像は Visual Studio から接続できていることを示すものです。 「バージョンが違う」ことが原因で ASP.NET アプリから接続できなかったのなら、コンソールアプリからも Visual Studio からも接続できないはず。どういうことですか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問