小编Kei*_*ith的帖子

由于ErrorCode ='0x80004005:80008083,.NET Core应用程序无法在IIS中启动

我有一个.NET Core应用程序.它在VS2017和Kestrel的本地运行.它在IIS下本地运行.但是,在服务器上,它无法以502.5 - Process Failure消息开头.

在事件日志中,我得到更多细节:

具有物理根'C:...\my-app-folder \'的应用程序'...'无法使用命令行'"dotnet"启动进程.\ MyApp.dll',ErrorCode ='0x80004005:80008083.

该应用程序的早期版本在同一台服务器上运行良好,唯一的区别是它们是使用VS2017RC(2&3)发布的,这是第一次使用完全发布的VS2017.

什么ErrorCode = '0x80004005 : 80008083.意思?

我如何解决它?

iis .net-core kestrel-http-server asp.net-core visual-studio-2017

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

REST和WebServices之间的区别

有什么区别REST和WebService(SOAP),我查看了facebook api,他们使用HTTP头和一些参数(可能是xml或非)并在xml中返回结果,其中SOAP完全相同,HTTP头+ xml参数和返回标头+ xml.

REST还需要一些经过身份验证的令牌,否则SOAP会使用http会话,这与用于身份验证和其他信息的令牌完全相同.我只能看到SOAP是REST的高级版本?

或者还有其他性能考虑因素吗?阅读REST只是谈论非常高级别的客户端服务器通信,但即使SOAP也完全相同.任何人都可以指出我可以定义REST和SOAP的正确边界.

我们在.net中透明地使用了很多SOAP,但是我只是想知道它是否真的值得注意REST,目前一切都运行得非常流畅.

我知道REST是一种架构而SOAP是一种协议,但我的问题是详细说明,目前SOAP的ASP.NET WebService实现是否具有REST架构?

asp.net rest soap web-services

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

.NET 2.0运行时的LINQ

启用LINQ的应用程序是否可以在仅安装了.NET 2.0运行时的计算机上运行?

从理论上讲,LINQ只不过是语法糖,而得到的IL代码应该与.NET 2.0中的代码相同.

如何在不使用.NET 3.5库的情况下编写LINQ?它会在.NET 2.0上运行吗?

.net linq clr .net-3.5 .net-2.0

57
推荐指数
6
解决办法
5万
查看次数

处理安全性的最佳方法,并避免使用用户输入的URL进行XSS

我们有一个高安全性应用程序,我们希望允许用户输入其他用户将看到的URL.

这引入了XSS黑客的高风险 - 用户可能会输入另一个用户最终执行的javascript.由于我们持有敏感数据,因此必须永远不会发生这种情况.

处理这个问题的最佳做法是什么?单独的安全白名单或转义模式是否足够好?

有关处理重定向的任何建议(例如,在关注链接之前,警告页面上的"此链接在我们的网站之外"消息)

有没有支持用户输入链接的论据?


澄清:

基本上我们的用户想要输入:

stackoverflow.com

并将其输出给另一个用户:

<a href="http://stackoverflow.com">stackoverflow.com</a>
Run Code Online (Sandbox Code Playgroud)

我真正担心的是他们在XSS黑客中使用它.即他们输入:

警报( '砍死!');

所以其他用户获得此链接:

<a href="alert('hacked!');">stackoverflow.com</a>
Run Code Online (Sandbox Code Playgroud)

我的例子只是解释风险 - 我很清楚javascript和URL是不同的东西,但通过让他们输入后者,他们可能能够执行前者.

你会惊讶于你可以用这个技巧打破多少网站 - HTML更糟糕.如果他们知道处理环节上做到他们也知道消毒<iframe>,<img>并巧妙的CSS参考?

我在高安全性环境中工作 - 单个XSS黑客可能会给我们造成很大的损失.我很高兴我可以制作一个正则表达式(或使用迄今为止的一个很​​好的建议),可以排除我能想到的一切,但这还够吗?

security xss url html-sanitizing

54
推荐指数
3
解决办法
4万
查看次数

从显式类型的ASP.NET Core API控制器(不是IActionResult)返回404

ASP.NET Core API控制器通常返回显式类型(默认情况下,如果您创建一个新项目),如下所示:

[Route("api/[controller]")]
public class ThingsController : Controller
{
    // GET api/things
    [HttpGet]
    public async Task<IEnumerable<Thing>> GetAsync()
    {
        //...
    }

    // GET api/things/5
    [HttpGet("{id}")]
    public async Task<Thing> GetAsync(int id)
    {
        Thing thingFromDB = await GetThingFromDBAsync();
        if(thingFromDB == null)
            return null; // This returns HTTP 204

        // Process thingFromDB, blah blah blah
        return thing;
    }

    // POST api/things
    [HttpPost]
    public void Post([FromBody]Thing thing)
    {
        //..
    }

    //... and so on...
}
Run Code Online (Sandbox Code Playgroud)

问题是return null;- 它返回HTTP 204:成功,没有内容.

然后,许多客户端Javascript组件将其视为成功,因此代码如下:

const …
Run Code Online (Sandbox Code Playgroud)

c# http-status-code-404 asp.net-core-mvc asp.net-core asp.net-core-webapi

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

为什么C#不支持类构造函数中隐含的泛型类型?

如果编译器可以推断它,C#不要求您指定泛型类型参数,例如:

List<int> myInts = new List<int> {0,1,1,
    2,3,5,8,13,21,34,55,89,144,233,377,
    610,987,1597,2584,4181,6765};

//this statement is clunky
List<string> myStrings = myInts.
    Select<int,string>( i => i.ToString() ).
    ToList<string>();

//the type is inferred from the lambda expression
//the compiler knows that it's taking an int and 
//returning a string
List<string> myStrings = myInts.
    Select( i => i.ToString() ).
    ToList();
Run Code Online (Sandbox Code Playgroud)

这是匿名类型所必需的,你不知道类型参数是什么(在intellisense中它显示为'a),因为它是由编译器添加的.

类级别类型参数不允许您这样做:

//sample generic class
public class GenericDemo<T> 
{
    public GenericDemo ( T value ) 
    {
        GenericTypedProperty = value;
    }

    public T GenericTypedProperty {get; set;} …
Run Code Online (Sandbox Code Playgroud)

.net c# generics

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

为什么没有Linq方法通过谓词返回不同的值?

我想在列表中获取不同的值,但不是通过标准的相等比较.

我想做的是这样的:

return myList.Distinct( (x, y) => x.Url == y.Url );
Run Code Online (Sandbox Code Playgroud)

我不能,Linq中没有扩展方法可以做到这一点 - 只需要一个IEqualityComparer.

我可以用这个来解决它:

return myList.GroupBy( x => x.Url ).Select( g => g.First() );
Run Code Online (Sandbox Code Playgroud)

但这似乎很混乱.它也没有做同样的事情 - 我只能在这里使用它因为我有一把钥匙.

我也可以添加自己的:

public static IEnumerable<T> Distinct<T>( 
    this IEnumerable<T> input, Func<T,T,bool> compare )
{
    //write my own here
}
Run Code Online (Sandbox Code Playgroud)

但这似乎就像写一些应该存在的东西一样.

任何人都知道为什么这种方法不存在?

我错过了什么吗?

c# linq distinct

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

NTFS备用数据流 - .NET

我如何从.NET创建/删除/读/写/ NTFS备用数据流?

如果没有本机.NET支持,我会使用哪个Win32 API?另外,我如何使用它们,因为我不认为这是记录在案的?

.net c# ntfs alternate-data-stream

48
推荐指数
5
解决办法
2万
查看次数

您是否可以使用具有自签名证书的服务工作者?

我有用于测试的开发人员服务器.它们具有SSL自签名证书,允许我们通过HTTPS测试Web应用程序,但有明显的警告证明证书不可验证.

这没关系,但是我有一个服务工作者会抛出一个错误 navigator.serviceWorker.register

SecurityError:无法注册ServiceWorker:获取脚本时发生SSL证书错误.

如何将Service Worker与具有自签名证书的Intranet测试服务器一起使用?

ssl https self-signed service-worker

47
推荐指数
5
解决办法
3万
查看次数

完全取代ASP.Net的会话

ASP.Net会话看起来非常适合传统的WebForms应用程序,但它们会为现代AJAX和MVC应用程序做一些严重问题.

具体来说,只有3种方法可以访问ASP.Net提供者:

  1. 锁定读写(默认) - 会话被锁定,AcquireRequestState直到ReleaseRequestState触发为止.如果浏览器立即发出3个请求,他们将在服务器上排队.这是MVC 2中唯一的选择,但MVC 3允许......

  2. 非锁定只读 - 会话未锁定,但无法保存.这似乎是不可靠的,因为有些读取似乎再次锁定会话.

  3. 会话已禁用 - 任何读取或写入会话的尝试都会引发异常.

然而,对于一个现代的MVC应用程序,我有很多AJAX事件同时发生 - 我不希望它们在服务器上的队列,但我希望他们能够写入会话.

我想要的是第四种模式:脏读,最后写赢

我认为(很高兴得到纠正)唯一的办法就是完全取代ASP.Net的会话.我可以编写自己的提供程序,但ASP仍会使用它支持的3个模式中的一个调用它.有没有办法让ASP.Net支持乐观并发?

这使得我用一个基本上做同样事情的新类替换对会话的所有调用,但是没有锁定 - 这是一个痛苦.

我希望保留尽可能多的当前会话内容(最重要的是在各种日志中的会话ID),并且代码更换量最少.有没有办法做到这一点?理想情况下,我想HttpContext.Current.Session指向我的新类,但没有ASP.Net锁定任何请求.

有没有人做过这样的事情?看来奇怪的是,所有的AJAXey MVC应用程序都是ASP的一个新问题.

asp.net concurrency session session-state

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