none
asp.net mvc web 项目 与asp.net mvc api项目,两个独立的项目。如何从web项目后台访问api RRS feed

  • 问题

  • 如题。自己使用httpclient可以从windows应用访问api。但是从 web后台使用httpclient却无法访问api.

    api中使用了owin。验证过程可以通过。但是 post后,却无返回 accesstoken.

    有人知道是什么原因不?

    2016年10月26日 10:11

全部回复

  • 你好,

    据我所知,在windows和web中通过httpclient方法来访问api是一样的。

    首先api会验证你的用户,然后通过验证会给你一个accesstoken,然后可以访问API.

    有可能你传递令牌的过程中丢失了令牌,也有可能你验证代码有问题。

    因为我们并不清楚你的API代码是如何写的,所以并不能给你一个确切的解决方法。

    我建议你可以安装一个fiddler来看下你的请求的结果,来确定到底是什么错误。

    另外,你可以参照如下链接

    如何使用 Web API 来对 MVC 应用程序进行身份验证:

    http://www.oschina.net/translate/how-can-you-use-web-api-to-authenticate-users-of-y?print


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2016年10月27日 2:52
  • 稍等,我写一个示例代码
    2016年10月27日 3:05
  • 是的。你说的没错。是可以。

    我也说不清楚为什么不行。我重新建了两个测试项目,结果就可以了。

    郁闷啊。

    此问题已解决。再问一个相关的问题,

    你那有没有使用webclient进行auth访问的资料。我现在使用的是httpclient.

    在我客户端里使用webclient,它使用异步方式进行post,结果我两个连接的post第一个还没有返回。第二个就执行了。这个时候一定是错的。

    有没有好的解决方法 。

    2016年10月27日 10:40
  • 你好,

    其实这种情况的原因可能是验证问题,或者网络问题等等,它的返回状态码有没有?

    资料的话,我建议你可以参照如下链接:http://zrj-software.iteye.com/blog/2163487

    另外,我建议你可以新开一个帖子,因为这个帖子里面的问题已经解决了。

    你下一个问题其实和上一个问题并不是十分相关,我们不建议在一个帖子中解决多个问题。

    因为这个并不方便,其他人搜索解决答案。

    谢谢


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2016年10月31日 1:47
  • 多谢。后面的问题也解决了。不是认证的原因。综合考虑的结果是 await异步方法同步调用的问题。

    一开始使用单例模式,如下操作

    abc.instace.get(api)

    在instace时进行了一次登录认证,然后get方法访问api

    这是两个操作,所以第一个登录认证的操作一直没有返回。

    后来修改为在get时判断是否登录,若未登录则重新登录。这样就把两个异步操作放到同一个同步过程里了。登录操作会立马返回。

    2016年10月31日 10:32