【发布时间】:2016-06-22 16:13:50
【问题描述】:
我使用 asp.net MVC 架构创建了 Web 应用程序。 我使用 Web API 从数据库中获取数据。 Web 应用程序和 Web API 都在同一个项目中。我没有在 IIS 上单独发布 Web API。
当我通过 Visual Studio 调试或运行应用程序时,它可以正常工作。我使用下面的代码从 Web API URL 获取数据
TODOINfo[] lstToDoInfo = httpClient.GetAsync("http://localhost:65373/api/RESTApi").Result.Content.ReadAsAsync<TODOINfo[]>().Result;
在上面的函数中,我传递了由 localhost 和固定端口号组成的 url。上面的代码在 Visual Studio 中运行时运行良好。
我通过以下更改在 IIS 上发布了相同的代码。
TODOINfo[] lstToDoInfo = httpClient.GetAsync("http://" + sBaseUrl + "/api/RESTApi").Result.Content.ReadAsAsync<TODOINfo[]>().Result;
sBaseUrl 值为“localhost”。
在 Internet Explorer 上浏览应用程序后出现以下错误。
No MediaTypeFormatter is available to read an object of type 'TODOINfo[]' from content with media type 'text/html'.
任何关于上述问题的信息或建议都非常感谢。
【问题讨论】:
-
你的意思是我必须在IIS上部署Web API。因为我是 IIS 配置的新手。请给出参考链接。
-
我还没有完全阅读,但我很确定这会给你你所需要的:support.microsoft.com/en-us/kb/323972 如果你遇到更多问题,请告诉我,稍后我会指导你。
-
三思而后行 因为您的 API 在同一个项目中,但是最好将其全部保存在 IIS 中的同一个 WebApp 下。但是您必须将 baseURL 更改为主机 + 站点:
-
感谢您的参考链接。我会通过它。我只是想确认从 Visual Studio 发布应用程序后仍然需要在 IIS 上进行配置。
-
感谢您的支持。它对我有用.... :)
标签: asp.net-mvc rest asp.net-web-api