小编aba*_*hev的帖子

如何在ASP.NET Core中获取HttpContext.Current?

我们目前正在使用ASP.NET Core重写/转换我们的ASP.NET WebForms应用程序.尽量避免重新设计.

我们HttpContext在类库中使用了一个部分来检查当前状态.如何HttpContext.Current在.NET Core 1.0中访问?

 var current = HttpContext.Current;
     if (current == null)
      {
       // do something here
       // string connection = Configuration.GetConnectionString("MyDb");
      }
Run Code Online (Sandbox Code Playgroud)

我需要访问它才能构建当前的应用程序主机.

$"{current.Request.Url.Scheme}://{current.Request.Url.Host}{(current.Request.Url.Port == 80 ? "" : ":" + current.Request.Url.Port)}";
Run Code Online (Sandbox Code Playgroud)

c# .net-core asp.net-core

182
推荐指数
3
解决办法
19万
查看次数

使用流畅的API设置唯一约束?

我正在尝试使用Code First构建一个EF实体,并EntityTypeConfiguration使用流畅的API.使用Unique Constraint创建主键很容易,但不是这样.我看到旧帖子建议为此执行本机SQL命令,但这似乎打败了目的.这可能与EF6有关吗?

c# entity-framework entity-framework-6 ef-fluent-api

181
推荐指数
5
解决办法
10万
查看次数

更改列,添加默认约束

我有一个表,其中一列是datetime类型的"Date".我们决定为该列添加默认约束

Alter table TableName
alter column dbo.TableName.Date default getutcdate() 
Run Code Online (Sandbox Code Playgroud)

但这给了我错误:

"."附近的语法不正确

有没有人在这里看到任何明显错误的东西,我错过了(除了有一个更好的名称列)

t-sql sql-server alter-table sql-server-2008 alter-column

180
推荐指数
4
解决办法
33万
查看次数

179
推荐指数
2
解决办法
7万
查看次数

更改varchar列的最大长度?

我正在尝试将varchar列的长度从255个字符更新为500而不会丢失内容.我之前已经删除并重新创建了表格,但我从未接触过alter statement,这是我认为我需要用来做这个的.我在这里找到了文档:ALTER TABLE(Transfact-SQL)但是我无法做出正面或反面.

到目前为止,我有以下内容(基本上没有任何遗憾):

alter table [progennet_dev].PROGEN.LE
alter column UR_VALUE_3
Run Code Online (Sandbox Code Playgroud)

我该如何处理?那里有没有更好的文件说明(我做了一些搜索示例声明但是空了)?

sql t-sql sql-server varchar sql-server-2008

177
推荐指数
4
解决办法
30万
查看次数

使用IHttpActionResult返回内容以获得非OK响应

对于从Web API 2控制器返回,如果响应正常(状态200),我可以返回带有响应的内容,如下所示:

    public IHttpActionResult Get()
    {
        string myResult = ...
        return Ok(myResult);
    }
Run Code Online (Sandbox Code Playgroud)

如果可能的话,我想在可能的情况下使用内置的结果类型:https://msdn.microsoft.com/en-us/library/system.web.http.results(v = vs.118).aspx

我的问题是,对于另一种类型的响应(不是200),如何用它返回消息(字符串)?例如,我可以这样做:

    public IHttpActionResult Get()
    {
       return InternalServerError();
    }
Run Code Online (Sandbox Code Playgroud)

但不是这个:

    public IHttpActionResult Get()
    {
       return InternalServerError("Message describing the error here");
    }
Run Code Online (Sandbox Code Playgroud)

理想情况下,我希望将其推广,以便我可以使用IHttpActionResult的任何实现发回消息.

我是否需要这样做(并构建我自己的响应消息):

    public IHttpActionResult Get()
    {
       HttpResponseMessage responseMessage = ...
       return ResponseMessage(responseMessage);
    }
Run Code Online (Sandbox Code Playgroud)

或者,还有更好的方法?

c# httpresponse asp.net-web-api

177
推荐指数
8
解决办法
21万
查看次数

.NET中的WebClient和HTTPWebRequest类之间有什么区别?

.NET中WebClientHttpWebRequest类与.NET 之间有什么区别?他们都做了非常相似的事情.实际上,为什么不将它们合并到一个类中(太多的方法/变量等可能是一个原因,但.NET中有其他类违反了该规则).

谢谢.

.net c# webclient httpwebrequest

176
推荐指数
3
解决办法
17万
查看次数

未经授权的webapi呼叫返回登录页面而不是401

如何配置我的mvc/webapi项目,以便从剃刀视图调用的webapi方法在未经授权时不返回登录页面?

它是一个MVC5应用程序,它也有通过javascript调用的WebApi控制器.

以下两种方法

[Route("api/home/LatestProblems")]      
[HttpGet()]
public List<vmLatestProblems> LatestProblems()
{
    // Something here
}

[Route("api/home/myLatestProblems")]
[HttpGet()]
[Authorize(Roles = "Member")]
public List<vmLatestProblems> mylatestproblems()
{
   // Something there
}
Run Code Online (Sandbox Code Playgroud)

通过以下角度代码调用:

angular.module('appWorship').controller('latest', 
    ['$scope', '$http', function ($scope,$http) {         
        var urlBase = baseurl + '/api/home/LatestProblems';
        $http.get(urlBase).success(function (data) {
            $scope.data = data;
        }).error(function (data) {
            console.log(data);
        });
        $http.get(baseurl + '/api/home/mylatestproblems')
          .success(function (data) {
            $scope.data2 = data;
        }).error(function (data) {
            console.log(data);
        });  
    }]
);
Run Code Online (Sandbox Code Playgroud)

所以我没有登录,第一个方法成功返回数据.第二种方法返回(在成功函数中)包含等效登录页面的数据.也就是说,如果你请求一个标有[授权]并且你没有登录的控制器动作,你会在mvc中获得什么.

我希望它返回401未授权,以便我可以根据用户是否登录显示不同的数据.理想情况下,如果用户已登录,我希望能够访问Controller的用户属性,以便我可以返回特定于该成员的数据.

更新:由于下面的建议似乎都不再适用(对Identity或WebAPI的更改)我在github上创建了一个原始示例,它应该说明问题.

c# asp.net-web-api owin asp.net-mvc-5 asp.net-identity

176
推荐指数
8
解决办法
8万
查看次数

Linq与XML Descendants和Elements之间有什么区别

我在VS IntelliSense中遇到过这两个关键字.我试图谷歌搜索他们之间的差异,并没有得到一个明确的答案.其中哪一个具有中小型XML文件的最佳性能.谢谢

.net c# xml linq-to-xml

174
推荐指数
2
解决办法
4万
查看次数

抛出HttpResponseException还是返回Request.CreateErrorResponse?

在查看ASP.NET Web API中的文章异常处理之后,我对于何时抛出异常vs返回错误响应感到困惑.我还想知道当你的方法返回特定于域的模型而不是HttpResponseMessage... 时是否可以修改响应

所以,在这里回顾一下我的问题,然后是一些带有#s的代码:

问题

关于案例#1的问题

  1. 我应该总是使用HttpResponseMessage而不是具体的域模型,以便可以自定义消息吗?
  2. 如果要返回具体的域模型,是否可以自定义消息?

关于案例#2,3,4的问题

  1. 我应该抛出异常还是返回错误响应?如果答案是"它取决于",你能否提供关于何时使用一个与另一个的情况/例子.
  2. 投掷HttpResponseExceptionVS有Request.CreateErrorResponse什么区别?输出到客户端似乎相同......
  3. 我是否应始终使用HttpError"包装"错误中的响应消息(是否抛出异常或返回错误响应)?

案例样本

// CASE #1
public Customer Get(string id)
{
    var customer = _customerService.GetById(id);
    if (customer == null)
    {
        var notFoundResponse = new HttpResponseMessage(HttpStatusCode.NotFound);
        throw new HttpResponseException(notFoundResponse);
    }
    //var response = Request.CreateResponse(HttpStatusCode.OK, customer);
    //response.Content.Headers.Expires = new DateTimeOffset(DateTime.Now.AddSeconds(300));
    return customer;
}        

// CASE #2
public HttpResponseMessage Get(string id)
{
    var customer = _customerService.GetById(id);
    if (customer …
Run Code Online (Sandbox Code Playgroud)

c# exception-handling http-status-codes asp.net-web-api

171
推荐指数
5
解决办法
13万
查看次数