簡體   English   中英

在本地計算機中使用Azure移動服務進行開發[.Net后端]

[英]Developing with Azure Mobile Services in a local computer[.Net backend]

我正在使用Azure移動服務開發雲服務,為了快速測試並調試它,我想在本地計算機中部署它。 我選擇了項目,點擊F5,在我的本地PC上運行IIS Express。 我針對IIS服務的本地URI地址執行客戶端,當我嘗試插入值時,如果我嘗試檢索或插入新對象,則會出現此異常:

An exception of type 'System.ArgumentException' occurred in EntityFramework.SqlServer.dll but was not handled in user code 

Additional information: The database name 'TR_MyTrip_Server_ExtraData_Service]_Persons_InsertUpdateDelete' is invalid. Database names must be of the form [<schema_name>.]<object_name>.

我調試了控制器的初始化,發現移動服務在ServiceContext對象的DataBase屬性上使用此連接信息部署了一個LocalDb實例:

Data Source=(localdb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-MyTrip.Server.ExtraData.Service-20140731060708.mdf;Initial Catalog=aspnet-TestProject.Server.ExtraData.Service-20140731060708;Integrated Security=True;MultipleActiveResultSets=True

如果我嘗試通過SQL Management Studio將此連接字符串連接到LocalDB,則無法找到此DataBase

我可以使用在CMD上運行此命令的SQL管理工作室訪問LocalDb實例並檢索LocalDB的連接

SqlLocalDB.exe info v11.0

無論如何,在SQL Management Studio上,我無法看到任何與我的移動服務控制器相關的數據庫。 我搜索谷歌和我發現的唯一相關鏈接是這個,但沒有工作...有誰知道發生了什么?

非常感謝

如果項目名稱中包含句點,則會出現此問題。 與TestProject.Server.ExtraData.Service類似。

要解決此問題,請進入web.config並編輯名為“MS_MobileServiceName”的appsetting,取出句點。 這是用作數據庫中移動服務表的SQL模式名稱的值。 它不能包含句號或其他特殊字符。

我通常會嘗試將其與我將部署的移動服務的名稱相同,但這在技術上並不需要。

無論出於何種原因,我都無法使用已接受的答案來解決這個問題。 我認為這與web.config中的免責聲明有關,該聲明表明:

發布到移動服務后,這些設置將被門戶網站中指定的值覆蓋。

但是,我確實在MobileServiceContext文件中找到了另一個解決方法,我替換了這一行:

string schema = ServiceSettingsDictionary.GetSchemaName();
if (!string.IsNullOrEmpty(schema))
{
    modelBuilder.HasDefaultSchema(schema);
}

使用簡單的字符串值modelBuilder.HasDefaultSchema('mySchema');

我想有一種方法可以影響GetSchemaName()的輸出,但是,考慮到解決這個問題花了多少精力,我現在非常滿意這個解決方案。

如果您已更改config中的MS_MobileServiceName以刪除句點,並且您仍然收到錯誤,則需要在程序包管理器控制台中重新運行初始遷移的腳手架:

Add-Migration Initial -Force

從我所看到的,腳手架生成一個嵌入的.resx,它仍然具有舊的模式名稱(DefaultSchema),以及設計器代碼中引用的快照(Target)。 只是更改DefaultSchema並沒有解決我的問題,但重新運行腳手架。

我還在我的模型中添加了表注釋,但我不認為這是問題所在。 如果您的服務已經存在,可能並不理想。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM