在以下链接的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 Web Api Web服务和一些使用它的移动应用程序.
我正在努力为我的应用和网络服务实现身份提供商和安全性.我可以使用Facebook身份验证来管理用户的身份吗?通过FB登录文档阅读,我看不出如何...我想我会让用户通过FB登录,通过我选择实现的身份验证流程,然后获取访问令牌.但是下次他们打开我的应用程序会发生什么?他们如何再次进行身份验证,以及我在我的数据库中存储哪些内容可以唯一标识Facebook用户(以及我的应用程序的用户)?我需要在我的应用程序环境中识别他们的身份,而不仅仅是知道Facebook说他们没事.
由于这是一个仅提供JSON(无UI)的Web Api,我不想使用任何javascript.但是,您需要在流中的某个点重定向的事实也是我关心的问题,因为移动应用程序在登录期间不应重定向.
我试图找到一些关于在Xamarin iOS中使用UiPickerView的基本说明.Stack Overflow上有一些问题可以回答某些问题,但我只想简单概述一下,希望能够将UiPickerView添加到ViewController,连接数据和注册事件.作为Xamarin和iOS的菜鸟,我正在努力编目这类控件的代码需要去的所有地方.
这让我发疯了 - 我无法在任何地方找到任何文件,说明我可能缺少任何可以访问此课程的特殊事项.
这表示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应该够了......
谁看过这个吗???
我昨天注意到,当我调试我的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角色项目).但有时候(实际上它似乎每隔一次我调试就会发生)......我需要做的就是停止并重新启动调试器.是什么导致了这个问题?
我有一个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一直没有通过领域.
我有一个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中使用它.
我有一些代码如下:
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) 我正在编写一种从 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 的示例,但是如何投射单个结果?
我有一个 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) 我即将将应用程序发布到Android和WP7市场(很快就会推出iPhone).
市场上的应用程序将是免费的,但会有每月订阅的功能.由于这不会像我只是为应用程序下载收费一样在市场上运行,我必须自己设置这个帐单.不幸的是,这是我所知甚少的.这是最快捷的途径?
谢谢!
azure ×2
c# ×2
acs ×1
android ×1
angularjs ×1
asp.net-mvc ×1
e-commerce ×1
facebook ×1
ios ×1
javascript ×1
paypal ×1
uipickerview ×1
xamarin ×1