2014-09-03 2 views
3

Azure 모바일 서비스를 사용하여 클라우드 서비스를 개발 중이며 신속하게 테스트하고 디버깅하려면 로컬 컴퓨터에 배포하고 싶습니다. 나는 프로젝트를 선택하고, F5를 누르고, 로컬 PC에서 IIS 익스프레스로 실행시킨다. 나는 IIS 서비스 내 로컬 URI 주소에 대해 cliente를 실행하고 나는 값을 삽입하려고 할 때 검색하거나 새로운 개체를 삽입 할 경우,이 예외가 나타납니다로컬 컴퓨터에서 Azure 모바일 서비스로 개발 [.Net 백엔드]

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>.

내가 디버깅을 나는이와 연결을 시도 할 경우이 데이터베이스를 찾을 수 없습니다

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 

: 컨트롤러의 초기화 및 모바일 서비스가 ServiceContext는 개체의 데이터베이스 속성에이 연결 정보와 LocalDb 인스턴스를 배포하는 것을 발견 내가 Eitherway을 CMD에서이 명령을 실행하고 LocalDB

SqlLocalDB.exe info v11.0 

에 대한 연결을 검색하는 SQL 관리 스튜디오로 LocalDb 인스턴스에 액세스 할 수 해요 SQL Management Studio를

를 통해 LocalDB에 연결 문자열, SQL Management Studio에서 내 모바일 컨트롤러 컨트롤러와 관련된 데이터베이스를 볼 수 없습니다. Google에서 검색 한 결과 내가 발견 한 유일한 관련 링크는 this 이었지만 작동하지 않습니다 ... 어떤 일이 발생했는지 아는 사람이 있습니까?

당신이 그것에 기간에 프로젝트 이름이있을 때이 문제가

답변

16

너무 감사드립니다. TestProject.Server.ExtraData.Service와 같습니다.

이 문제를 해결하려면 web.config로 이동하여 마침표를 사용하여 "MS_MobileServiceName"이라는 appsetting을 편집하십시오. 이것은 데이터베이스의 모바일 서비스 테이블에 대한 SQL 스키마 이름으로 사용되는 값입니다. 마침표 나 다른 특수 문자를 사용할 수 없습니다.

일반적으로 배포 할 모바일 서비스의 이름과 동일하게하려고하지만 기술적으로 필수는 아닙니다.

+1

진짜야! 정말 고맙습니다. 나는 하루 종일 만들고 재창조하고 테스트하며이 오류의 원인을 파악하지 못했습니다. 그들은 정말로 webconfig에 서비스 이름의 값을 정리하거나 최소한의 기간을 두지 못하게해야합니다. – jmichas

+0

Fernando, 답변으로 표시하십시오. – jmichas

+0

안녕하세요, 나는 그것을 테스트하고 실제로 일했습니다! 대답을 위해 당신을 너무 많이 thak! jmichas가 말했듯이, 그들은 당신이 마침표를 넣지 못하게 할 수 있습니다 ... – toroveneno

2

어떤 이유에서든 허용 된 답변을 사용하여 작동하지 못했습니다. 나는 이것이 web.config의 면책 조항과 관련이 있다고 가정합니다 :

이 설정은 포털에 지정된 값으로 무시됩니다. modelBuilder.HasDefaultSchema('mySchema');

내가 출력에 영향을 미칠 수있는 방법이 상상 간단한 문자열 값

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

:

그러나, 나는이 선을 대체 어디 MobileServiceContext 파일에 주변에 다른 일을 찾았어요 GetSchemaName()이지만,이 문제를 해결하는 데 얼마나 많은 노력이 필요했는지 고려하면 지금 당장이 솔루션에 만족합니다.

+0

어제 Azure SDK 업데이트를 설치하고 모바일 서비스 응용 프로그램을 재배포 한 후 필자는 데이터베이스에 중복 테이블을 가져 오기 시작했습니다. 'HasDefaultSchema' 호출에 지정된 스키마 외에도'dbo' 스키마에도 같은 테이블이있었습니다. '__MigrationHistory' 테이블조차 복제되었습니다. 지금은'HasDefaultSchema' 호출을 제거하고 디폴트'dbo'를 받아들입니다. –

2

당신이 기간을 제거하기 위해 설정에서 MS_MobileServiceName을 변경했습니다, 당신은 여전히 ​​오류가 발생하는 경우 패키지 관리자 콘솔에서 초기 마이그레이션을위한 발판을 다시 실행해야합니다 :

Add-Migration Initial -Force

스캐 폴딩은 이전 스키마 이름 (DefaultSchema)과 디자이너 코드에서 참조하는 스냅 샷 (Target)이 포함 된 임베디드 .resx를 생성합니다. DefaultSchema를 변경해도 문제가 해결되지는 않았지만 스캐 폴딩을 다시 실행하면됩니다.

또한 내 모델에 표 주석을 추가했지만 문제가 아닌 것으로 생각합니다. 그리고 당신의 서비스가 이미 살아 있다면 아마 이상적이지 않을 것입니다.

관련 문제