小编And*_*ltz的帖子

MVC WebApi中的方法如何映射到http动词?

在以下链接的5分钟视频中,在1:10标记处,Jon Galloway说,在他的CommentsController控制器类中添加一个名为DeleteComment的方法将按照约定自动映射到删除http动词.

如何使用WebApi的MVC知道如何将方法路由到正确的动词?我知道global.asax.cs文件中的路由将请求路由到正确的控制器,但是删除请求如何"按惯例"映射到delete方法或任何方法?特别是当每个动词可以有多于1种方法时?"按照惯例"让我觉得它只是在查看方法名称中的第一个单词...但如果是这样的话,它必须读取方法的签名来告诉两个删除方法或两个方法分开...以及是这个定义了吗?

视频:http: //www.asp.net/web-api/videos/getting-started/delete-and-update

谢谢!

编辑:以下是WebApi模板中的示例ValuesController类中的代码.这是我原来问题的来源.区分这些(以及控制器中的任何其他方法)的"约定"如何工作?

// GET /api/values
    public IEnumerable<string> Get()
    {
        return new string[] { "value1", "value2" };
    }

    // GET /api/values/5
    public string Get(int id)
    {
        return value;
    }
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc asp.net-mvc-routing asp.net-web-api

31
推荐指数
1
解决办法
2万
查看次数

用于Web API服务/移动应用的Facebook身份验证

我有一个ASP.NET MVC Web Api Web服务和一些使用它的移动应用程序.

我正在努力为我的应用和网络服务实现身份提供商和安全性.我可以使用Facebook身份验证来管理用户的身份吗?通过FB登录文档阅读,我看不出如何...我想我会让用户通过FB登录,通过我选择实现的身份验证流程,然后获取访问令牌.但是下次他们打开我的应用程序会发生什么?他们如何再次进行身份验证,以及我在我的数据库中存储哪些内容可以唯一标识Facebook用户(以及我的应用程序的用户)?我需要在我的应用程序环境中识别他们的身份,而不仅仅是知道Facebook说他们没事.

由于这是一个仅提供JSON(无UI)的Web Api,我不想使用任何javascript.但是,您需要在流中的某个点重定向的事实也是我关心的问题,因为移动应用程序在登录期间不应重定向.

authentication facebook facebook-c#-sdk asp.net-web-api

7
推荐指数
1
解决办法
5722
查看次数

Xamarin iOS UiPickerView教程

我试图找到一些关于在Xamarin iOS中使用UiPickerView的基本说明.Stack Overflow上有一些问题可以回答某些问题,但我只想简单概述一下,希望能够将UiPickerView添加到ViewController,连接数据和注册事件.作为Xamarin和iOS的菜鸟,我正在努力编目这类控件的代码需要去的所有地方.

uipickerview ios xamarin

6
推荐指数
2
解决办法
6338
查看次数

无法访问HttpRequestMessageExtensions

这让我发疯了 - 我无法在任何地方找到任何文件,说明我可能缺少任何可以访问此课程的特殊事项.

这表示HttpRequestMessage没有名为GetQueryNameValuePairs的扩展方法:

var token = request.GetQueryNameValuePairs().SingleOrDefault(x => x.Key == OAuthConstants.AuthorzationParam).Value;
Run Code Online (Sandbox Code Playgroud)

以下是我的用法:

using System;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using GoodBreaksClasses;
using GoodBreaksTypes;
using Newtonsoft.Json;
using OAuth2.Mvc;
using System.Web.Http.ValueProviders;
using System.Net.Http.Formatting;
Run Code Online (Sandbox Code Playgroud)

其中一些我不需要,但我试图找到适合我的图书馆; 我知道System.Web.Http应该够了......

谁看过这个吗???

asp.net-web-api

5
推荐指数
1
解决办法
2766
查看次数

MVC4 Web API中的Global.Asax错误在Azure计算模拟器中运行 - 仅在有时

我昨天注意到,当我调试我的Web角色时,我的本地Windows Azure模拟器中发生了这个错误.但部署的项目仍然适用于Azure.今天,我部署的项目失败了同样的错误.请帮忙!

这个代码块在我的Global.axax.cs文件的Application_Start方法中:

GlobalConfiguration.Configuration.MessageHandlers
  .Add(new BasicAuthMessageHandler()
  {
     PrincipalProvider = new PrincipalProvider()
  });
Run Code Online (Sandbox Code Playgroud)

抛出此错误:

违反类型的继承安全规则:'System.Net.Http.Formatting.JsonContractResolver'.派生类型必须与基本类型的安全可访问性匹配,或者不太容易访问.

当我开始调试时(这是一个Azure Web角色项目).但有时候(实际上它似乎每隔一次我调试就会发生)......我需要做的就是停止并重新启动调试器.是什么导致了这个问题?

asp.net-mvc-4 asp.net-web-api

5
推荐指数
1
解决办法
3471
查看次数

Azure访问控制服务(ACS) - ACS50001:未找到标识符为"https:// [namespace] .accesscontrol.windows.net /"的依赖方

我有一个ACS名称空间,并设置了WS-Federation身份提供程序.由于我使用的是Visual Studio 2012,因此我使用了身份和访问工具来创建依赖方.该工具使用领域并返回我在创建依赖方时提供的url值(我使用Azure云服务URL,我正在部署我的项目 - 即http://myapp.cloudapp.net).运行该工具后,我的依赖方规则组中只有一条规则 - 通过[依赖方]的所有声明.我只用一条规则测试了我的应用程序的ACS,并且在为WS-Federation身份提供者生成了所有规则之后.

无论规则组中的规则如何,我都会在问题的标题中出现错误.我的浏览器被重定向到ACS,但由于某种原因它无法找到正确的依赖方.我在两个不同的Azure帐户中创建了一个ACS命名空间,身份提供程序和依赖方,结果完全相同.

我还尝试使用http和https端点将我的项目发布到Azure云服务,并且两个端点都产生相同的结果.

WS-Federation身份提供程序的联合元数据来自Windows Azure Active Directory.

来自web.config的UPDATE FederationConfiguration部分:

<federationConfiguration>
      <cookieHandler requireSsl="false" />
      <wsFederation passiveRedirectEnabled="true" issuer="https://[MyNamespace].accesscontrol.windows.net/v2/wsfederation" realm="http://[MyApp].cloudapp.net/" requireHttps="false" />
</federationConfiguration>
Run Code Online (Sandbox Code Playgroud)

更新2:仍然没有解决方案.看起来这个问题源于我设置了自己的ACS身份提供程序,并从该身份提供程序的Windows Azure Active Directory(WAAD)下载了联合元数据.这基本上将2个ACS实例链接在一起.当我的应用程序重定向到我的ACS时,它将我的应用程序的URL作为领域传递.然后,我的ACS重定向到身份提供者WAAD,并将其自己的URL作为领域传递.这就是为什么我得到的错误具有依赖方标识符=我自己的ACS管理门户网站的url的奇怪特征.我不确定为什么它从我的应用程序到WAAD一直没有通过领域.

acs ws-federation

5
推荐指数
1
解决办法
5951
查看次数

Angular - CDN引用工作,本地min文件没有

我有一个HTML文件,里面有一些Javascript.我正在使用Angular.js.如果我引用CDN,就像这样:

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.8/angular.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

一切正常.如果我尝试使用局部angular.js或angular.min.js文件,Angular函数会断开:

<script src="../Javascript/angular.js"></script>
Run Code Online (Sandbox Code Playgroud)

有这个已知的原因吗?没有别的变化.我的问题是,我不确定我的代码是否可以进入我正在部署它的CDN.Angular函数在使用CDN引用的部署位置中不起作用,我想使用本地引用进行测试,但我首先无法在dev中使用它.

javascript angularjs

5
推荐指数
1
解决办法
4072
查看次数

来自2级Task.ContinueWith的意外行为

我有一些代码如下:

1类

Task<List<ConfSession>> getSessionsTask = Task.Factory.StartNew(() =>
            {
                var confSessions = 
                    TaskHelper<ConfSession>.InvokeTaskMagic(request);
                //PROBLEM - THIS CODE RACES TO THE NEXT LINE 
                //BEFORE confSessions IS POPULATED FROM THE LINE ABOVE - IE 
                //confSessions IS ALWAYS AN EMPTY LIST 
                //WHEN IT'S RETURNED
                return confSessions;
            }
        );
Run Code Online (Sandbox Code Playgroud)

Class2(TaskHelper)

//methods
public static List<T> InvokeTaskMagic(HttpWebRequest request)
{
    var resultList = new List<T>();

    Task<WebResponse> task1 = Task<WebResponse>.Factory.FromAsync(
        (callback, o) => ((HttpWebRequest)o).BeginGetResponse(callback, o)
        , result => ((HttpWebRequest)result.AsyncState).EndGetResponse(result)
        , request);

    task1.ContinueWith((antecedent) =>
    {
        if (antecedent.IsFaulted)
        {
            return;
        } …
Run Code Online (Sandbox Code Playgroud)

c# task-parallel-library

4
推荐指数
1
解决办法
230
查看次数

将 Azure 表存储 TableResult 强制转换为类

我正在编写一种从 Azure 表存储服务检索实体的方法。我需要将实体作为 User 类型而不是 TableResult 返回。以下代码可以编译,但始终返回 Null:

var partitionKey = "user";

            var retrieveOperation = TableOperation.Retrieve<TableEntity>(partitionKey, userName);
            var result = _table.Execute(retrieveOperation);

            if (result == null)
            {
                return null;
            }

            return result.Result as User;
Run Code Online (Sandbox Code Playgroud)

我假设这是因为从 TableResult 到 User 的转换由于某种原因不起作用。像 (User)result.Result 一样转换它实际上会在运行时引发错误。我见过一个在实体列表上使用 Linq 的示例,但是如何投射单个结果?

c# azure azure-storage azure-table-storage

4
推荐指数
1
解决办法
4170
查看次数

Azure表存储投影查询和未实现异常

我有一个 Person 类,并将其保存到 Azure 表存储中的表中。

我想使用以下查询之一来查询它:

var query = from getThis in _serviceContext.CreateQuery<PersonForSearch>(_tableName)
                        where getThis.Name.Contains(searchTerm)
                        select new Person
                        {
                            PartitionKey = getThis.PartitionKey, 
                            RowKey = getThis.RowKey,
                            Name = getThis.Name
                        };
Run Code Online (Sandbox Code Playgroud)

或者

CloudTableQuery<Person> query =
                 (from getThis in _serviceContext.CreateQuery<Person>(_tableName)
                  where getThis.Name.Contains(searchTerm)
                  select getThis).AsTableServiceQuery<Person>();
Run Code Online (Sandbox Code Playgroud)

无论使用哪一种,我都会收到以下错误,该错误出现在我用来循环查询结果的 foreach 循环上:

NotImplemented 未在指定资源上执行请求的操作。

我认为这可能是因为我的 Person 模型不是从 TableServiceEntity 继承的(我拒绝引入这种耦合 - 所以我用这个属性装饰它: [DataServiceKey("PartitionKey", "RowKey")] 并手动给出它是 PartitionKey 和 RowKey 属性。

因此,我尝试创建一个 DID 继承自 TableServiceEntity 的实体,这将允许我查询该表(正如您从查询中看到的,我唯一担心的属性是 Name)。

这个新实体如下:

class PersonForSearch : TableServiceEntity
{
    public string Name { get; set; }
} …
Run Code Online (Sandbox Code Playgroud)

azure azure-table-storage

2
推荐指数
1
解决办法
2085
查看次数

设置订阅结算的最佳方式

我即将将应用程序发布到Android和WP7市场(很快就会推出iPhone).

市场上的应用程序将是免费的,但会有每月订阅的功能.由于这不会像我只是为应用程序下载收费一样在市场上运行,我必须自己设置这个帐单.不幸的是,这是我所知甚少的.这是最快捷的途径?

谢谢!

android paypal e-commerce windows-phone-7

-1
推荐指数
1
解决办法
227
查看次数