我尝试使用Azure移动应用和Azure存储为我的Xamarin.Forms应用构建后端。我在Azure(移动服务,存储帐户,ConnectionString等)中创建了所有内容,并下载了后端的默认项目(因为我选择C#作为语言)和Xamarin.Forms应用程序。
然后我在本地调试了后端的项目并且正在工作,所以我发布了它。当我使用默认的Xamarin.Forms应用程序测试Web API时,服务器返回了一个异常(500内部服务器异常),并显示消息"发生了错误。"。之后我尝试启用服务器日志,远程调试和xml日志文件,但我找不到多少。
远程调试显示"可见"没有问题。后端代码(调试时没有抛出异常)。
xml日志文件在OWIN方法中显示警告,但没有错误。
服务器日志在GET请求中显示两个错误:
azure-log.txt
OBS。我删除了我的应用服务名称,并替换为" {servicename}"。
我已经尝试删除并重新创建所有Azure服务,已尝试从http更改为https并尝试将connectionString更改为其他值。但是,只有在尝试调试默认项目后没有任何成功,我才进行了这些更改。
我试图解决这个错误一段时间,我不知道我能做些什么。
谢谢你的帮助!
答案 0 :(得分:2)
Exception = System.Data.SqlClient.SqlException(0x80131904):建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。 验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供程序:SQL网络接口,错误:52 - 无法找到本地数据库运行时安装。验证SQL Server Express是否已正确安装且本地数据库运行时功能是否正确启用。)---> System.ComponentModel.Win32Exception(0x80004005):系统无法在System.Data.ProviderBase.DbConnectionPool.TryGetConnection
中找到指定的文件
根据您提供的错误,我假设您在Azure移动后端使用本地数据库。您可以利用KUDU或Azure App Service Editor检查web.config文件下的MS_TableConnectionString
连接字符串。连接字符串看起来像这样:
<add name="MS_TableConnectionString" connectionString="Server=tcp:{your_dbservername}.database.windows.net,1433;Initial Catalog={your_dbname};Persist Security Info=False;User ID={your_username};Password={your_password};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;" providerName="System.Data.SqlClient"/>
通过Visual Studio将移动应用程序部署到Azure时,您需要将连接字符串指向Azure数据库,如下所示:
有关创建移动应用程序并将其部署到Azure App Service的详细信息,请参阅此document。此外,您可以利用&#34;所有设置&gt;应用程序设置&#34;在您的Web应用程序刀片下配置您的connectionstring,它可以在运行时覆盖您的web.config文件中的现有连接字符串。有关详细信息,请参阅此官方tutorial。
此外,您可以关注Adrian Hall的书籍here,以便更好地了解并快速启动Azure移动应用。
答案 1 :(得分:1)
发生错误是因为Azure为后端创建的默认项目旨在与SQL一起使用。由于我使用Azure存储作为数据库,我不得不修改此项目。
Adrian Hall的书(NoSQL Storage with the StorageDomainManager)第3章解释了如何做到这一点。