Gần đây tôi đã thiết lập trang web đầu tiên của mình trên Azure. Bây giờ, về cơ bản nó chỉ là trang web mẫu chuẩn MVC4 với bộ điều khiển Trang chủ và Tài khoản. Trong Azure, tôi có một trang web và một cơ sở dữ liệu SQL. Tôi có thể truy cập cơ sở dữ liệu SQL Azure từ SSMS, và đã thiết lập đăng nhập và người dùng được sử dụng bởi trang web của tôi.Không thể truy cập SQL Azure DB từ trang web Azure mặc dù cùng một chuỗi kết nối hoạt động từ trang web địa phương
Trong môi trường phát triển của tôi, chỉ vào cơ sở dữ liệu phát triển của tôi, tôi có thể truy cập vào trang/Tài khoản/Đăng nhập tốt. Tôi có thể đăng ký và tôi có thể thấy người dùng mới trong db cục bộ của mình. Tôi cũng có thể thay đổi chuỗi kết nối để trỏ trang web phát triển của tôi tại SQL Azure DB của tôi, và một lần nữa tôi có thể truy cập/Tài khoản/Đăng nhập và đăng ký người dùng mới. Sau đó tôi có thể thấy những người dùng mới trong SQL Azure DB.
Sự cố xảy ra khi tôi triển khai trang web tới Azure. Tôi có một cấu hình biến đổi liên kết với tập tin publishsettings của tôi, và tôi có thể thấy trong cửa sổ đầu ra khi xuất bản các trang web để Azure mà biến đổi này được áp dụng trong quá trình triển khai. Điều này sửa đổi chuỗi kết nối DB phát triển cục bộ thành chuỗi kết nối SQL Azure. Tôi cũng đã xác minh rằng chuỗi kết nối SQL Azure này nằm trong tệp web.config thực tế được triển khai (sử dụng FileZilla FTP để truy xuất web.config thực tế được triển khai). Tôi có thể truy cập vào trang chủ của trang web của tôi trên [mysite] .AzureWebsites.net, nhưng khi tôi nhấp vào liên kết đăng nhập để đi đến trang/tài khoản/Đăng nhập, tôi nhận được lỗi sau:
[ArgumentException: Format of the initialization string does not conform to specification starting at index 0.]
System.Data.Common.DbConnectionOptions.GetKeyValuePair(String connectionString, Int32 currentPosition, StringBuilder buffer, Boolean useOdbcRules, String& keyname, String& keyvalue) +5313265
System.Data.Common.DbConnectionOptions.ParseInternal(Hashtable parsetable, String connectionString, Boolean buildChain, Hashtable synonyms, Boolean firstKey) +124
System.Data.Common.DbConnectionOptions..ctor(String connectionString, Hashtable synonyms, Boolean useOdbcRules) +95
System.Data.SqlClient.SqlConnectionString..ctor(String connectionString) +59
System.Data.SqlClient.SqlConnectionFactory.CreateConnectionOptions(String connectionString, DbConnectionOptions previous) +24
System.Data.ProviderBase.DbConnectionFactory.GetConnectionPoolGroup(DbConnectionPoolKey key, DbConnectionPoolGroupOptions poolOptions, DbConnectionOptions& userConnectionOptions) +167
System.Data.SqlClient.SqlConnection.ConnectionString_Set(DbConnectionPoolKey key) +61
System.Data.SqlClient.SqlConnection.set_ConnectionString(String value) +66
System.Data.Entity.Internal.LazyInternalConnection.InitializeFromConnectionStringSetting(ConnectionStringSettings appConfigConnection) +122
System.Data.Entity.Internal.LazyInternalConnection.TryInitializeFromAppConfig(String name, AppConfig config) +32
System.Data.Entity.Internal.LazyInternalConnection.Initialize() +127
System.Data.Entity.Internal.LazyInternalConnection.get_ProviderName() +13
System.Data.Entity.Internal.LazyInternalContext.InitializeContext() +346
System.Data.Entity.Internal.InternalContext.CreateObjectContextForDdlOps() +17
System.Data.Entity.Database.Exists() +36
[MyWebsite].Filters.SimpleMembershipInitializer..ctor() +105
Điều này có vẻ để đề xuất rằng có một vấn đề với chuỗi kết nối của tôi, nhưng như tôi đã đề cập trước đó, chuỗi kết nối chính xác này đã hoạt động từ trang web địa phương của tôi.
Tôi đã xem vấn đề có thể liên quan đến tường lửa, nhưng tôi đã kiểm tra cài đặt trong cổng quản lý Azure và quy tắc tường lửa Windows Azure Services được áp dụng để cho phép truy cập đó. Ngoài ra, tôi đã cố gắng loại bỏ các quy tắc tường lửa cho máy địa phương của tôi để truy cập SQL Azure DB, để xem tôi sẽ nhận được một ngoại lệ tương tự, nhưng ngoại lệ ném là rất rõ ràng liên quan đến tường lửa.
Tôi cũng đã cố gắng thêm chuỗi kết nối SQL Azure thông qua cổng quản lý Azure (mặc dù tôi không thấy cách chỉ định nhà cung cấp) - không cần phải nói, tôi có cùng "Định dạng khởi tạo ... "ngoại lệ được đề cập ở trên.
chuỗi kết nối của tôi trong web.config là theo định dạng sau:
<add name="[my connection name]"
connectionString="Server=tcp:abc123.database.windows.net,1433;Database=[my database];User ID=[my login]@abc123;Password=[my password];Trusted_Connection=False;Encrypt=True;Connection Timeout=30;"
providerName="System.Data.SqlClient" />
Bất kỳ gợi ý sẽ rất hoan nghênh.
Rất thích thú khi bắt đầu xây dựng UsersContext. –
Bạn có đang sử dụng cập nhật cơ sở dữ liệu web triển khai không? Có một hộp kiểm cho dù bạn muốn thêm chuỗi kết nối vào dự án. – kvetis