私はEntity Framework Code Firstを使用して作成したWebアプリケーションを持っています。それを設定する際には、接続文字列の名前としてDBContextの完全な名前空間とクラスを指定することで、DB接続文字列を自分のDBContextに一致させることができました。 エンティティフレームワークコード最初にIISを使用して接続文字列を無視
<add name="MyClassProject.EfDbContext" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=MyDatabase;Integrated Security=true;User Id=MyUsername;Password=MyPassword;" providerName="System.Data.SqlClient"/>
は、私はプロジェクトを設定するとき最初に、私はちょうどそれがCで作成しました:\のinetpub \ wwwrootに、わずかのVisual Studioを通してそれを実行しました。すべてうまくいった。
私はコードを別のWebサイトフォルダに構築し、WebサイトをIISの独自のWebサイトとアプリケーションプールとして実行しようとしています。私はウェブサイトとホストファイルを設定しましたが、実行すると次のエラーが発生しました。
ログインで要求されたデータベース "MyDatabase"を開くことができません。ログインに失敗しました。
ユーザー 'IIS APPPOOL \ MyAppPool'のログインに失敗しました。
私は接続の文字列でDBに使用するセキュリティのユーザ名とパスワードを指定しているようですが、どうしてこんなことが起こっているのでしょうか?私のウェブサイトは動いていますか?
また、SQL ServerでMyAppPool(またはそれを変更した場合はネットワークサービス)のDB権限を与えなくても、これをどのように修正できますか?
アップデート:私は、私が使用して私のDBContextクラスを初期化することを述べてきたはずです:
namespace MyClassProject
{
public class EfDbContext : DbContext
{
public EfDbContext() : base ("MyDatabase")
{
}
}
}
接続文字列からその属性を削除しましたが、引き続き同じ問題があります。私は明示的にIntegrated Security = falseを設定しようと試みました。しかしそれはどちらもうまくいかなかった。 –
@SeanHolmesbyあなたはその接続文字列を使用していますか? –
Visual Studioを実行すると(動作しているとき)、参照しようとしているデータベースにデータが確実に追加されます。 私が持っている: - 名前空間MyClassProject {publicクラスEfDbContext:DbContext {パブリックEfDbContext() ベース( "MyDatabaseという") {}} } ......そして次のようになります。 connectionStrings> –