小编Jos*_*den的帖子

C#可以将值类型与null进行比较

我今天碰到了这个,并且不知道为什么C#编译器没有抛出错误.

Int32 x = 1;
if (x == null)
{
    Console.WriteLine("What the?");
}
Run Code Online (Sandbox Code Playgroud)

我很困惑x怎么可能是null.特别是因为这个赋值肯定会抛出编译器错误:

Int32 x = null;
Run Code Online (Sandbox Code Playgroud)

是否有可能x变为null,微软是否决定不将此检查放入编译器,还是完全错过了?

更新:在编写了这篇文章的代码后,编译器突然发出一个警告,表达式永远不会成立.现在我真的迷路了.我把对象放到一个类中,现在警告已经消失,但是留下了问题,值类型最终是否为null.

public class Test
{
    public DateTime ADate = DateTime.Now;

    public Test ()
    {
        Test test = new Test();
        if (test.ADate == null)
        {
            Console.WriteLine("What the?");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# null

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

如何使用OWIN中间件在Web Api中实现OAuth2 Authorization_Code流程?

我正在尝试创建一个简单的概念验证OAuth启用的应用程序,但我坚持授权代码实现.我读到的每个地方看起来都是这样或那样,从来没有实际使用过授权代码流.我一直在使用以下资源获取信息:

我已经使用自定义OAuthAuthorizationServerProvider设置了web api和owin,以接受刷新令牌的密码授予类型以及为访问令牌交换刷新令牌的功能.这很好用,但我想设置一个场景,我将浏览器重定向到服务器以授权并使用授权代码重定向回客户端.然后,我希望客户端将授权代码发送到令牌端点以获取刷新令牌

在Web Server Apps下的第二个链接中,我正在尝试让我的web api应用程序显示来自请求的授权代码,例如http://127.0.0.1/auth?response_type=code&client_id=123&redirect_uri=http://validredirect .com&scope = access,但我一直得到404.

我已将owin配置如下:

var databaseContext = new AdnsfContext();

WebApp.Start(
    new StartOptions("http://127.0.0.1:7000"),
    appBuilder =>
    {
        var httpConfig = new HttpConfiguration();
        httpConfig.MapHttpAttributeRoutes();
        httpConfig.SuppressDefaultHostAuthentication();
        httpConfig.Filters.Add(new HostAuthenticationFilter("Bearer"));

        appBuilder
            .UseOAuthAuthorizationServer(new OAuthAuthorizationServerOptions
                {
                    AllowInsecureHttp = true,
                    ApplicationCanDisplayErrors = true,
                    AuthorizeEndpointPath = new PathString("/auth"),
                    TokenEndpointPath = new PathString("/token"),
                    AuthorizationCodeExpireTimeSpan = TimeSpan.FromMinutes(1),
                    AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(1),
                    Provider = new AuthServerProvider(),
                    AuthorizationCodeProvider = new AuthorizationCodeProvider(),
                    RefreshTokenProvider = new RefreshTokenProvider(),
                })
            .UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions
                {
                    AuthenticationMode = Microsoft.Owin.Security.AuthenticationMode.Active,
                    AuthenticationType …
Run Code Online (Sandbox Code Playgroud)

c# oauth-2.0 asp.net-web-api owin

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

为什么我不能将String.Empty用作默认参数值?

今天我在构造函数中创建了一个默认参数值.

public SomeClass (String something = String.Empty)
{
   // ...
}
Run Code Online (Sandbox Code Playgroud)

编译器抱怨道.

"something"的默认参数值必须是编译时常量.

我的印象是String类上的Empty是编译时常量.

.field public static initonly string Empty
Run Code Online (Sandbox Code Playgroud)

我是否理解编译时常量的含义,还是我需要接受的更为古怪?

.net string default-parameters

9
推荐指数
1
解决办法
2917
查看次数

如何关闭Visual Studio 2008脚本调试

如果我使用Visual Studio 2008和Internet Explorer启动ASP.NET项目,Visual Studio将启动脚本调试.我得到一个脚本文档节点,其中包含Windows Internet Explorer和Default.aspx的子节点,下面有大量的匿名代码节点.

除了告诉VS在FireFox中启动应用程序之外,我很难关闭它.我一直在搜索并找到解决方案来关闭Internet Explorer中的脚本调试,但这对我没有任何改变.

有没有人找到解决方案?

internet-explorer script-debugging visual-studio-2008

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

使用XSD验证XML

我遇到了使用XSD验证XML的真正困难.我应该在所有这些前面加上前缀,我是XSD和验证的新手,所以我不确定这是代码问题还是XML问题.我已经使用了大量不同的选项来回到XML API,并认为我已经找到了使用XSD验证XML的理想策略.请注意,我的XML和XSD来自数据库,所以我不需要从磁盘读取任何内容.

我已将问题缩小为简单的Windows Forms应用程序示例.它有一个XSD文本框(txtXsd),一个XML文本框(txtXml),一个结果文本框(txtResult),以及一个启动验证的按钮(btnValidate).

我正在使用Microsoft的示例XSD文件,

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:bookstore-schema" elementFormDefault="qualified" targetNamespace="urn:bookstore-schema">
    <xsd:element name="title" type="xsd:string" />
    <xsd:element name="comment" type="xsd:string" />
    <xsd:element name="author" type="authorName"/>
    <xsd:complexType name="authorName">
        <xsd:sequence>
            <xsd:element name="first-name" type="xsd:string" />
            <xsd:element name="last-name" type="xsd:string" />
        </xsd:sequence>
    </xsd:complexType>
</xsd:schema>
Run Code Online (Sandbox Code Playgroud)

我在我的应用程序中使用以下代码.

private void btnValidate_Click (object sender, EventArgs e)
{
    try
    {
        XmlTextReader reader = new XmlTextReader(txtXsd.Text, XmlNodeType.Document, new XmlParserContext(null, null, String.Empty, XmlSpace.None));
        XmlSchema schema = XmlSchema.Read(reader, null);
        XmlSchemaSet schemas = new XmlSchemaSet();
        schemas.Add(schema);

        XDocument doc = XDocument.Parse(txtXml.Text);
        doc.Validate(schemas, ValidateSchema);
    }
    catch …
Run Code Online (Sandbox Code Playgroud)

xml xsd linq-to-xml

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

如何确定.NET中的数据类型有多大?

我想加深对数据类型的理解,并想知道如何确定数据类型的大小.我希望通往答案的旅程能够揭开其他未知数.

我知道在.NET中,一个字节是一个8位无符号整数,但只是因为我读过它.如果我有一个非常简单的控制台应用程序,如下所示:

static void Main(string[] args)
{
byte b = 1;
}
Run Code Online (Sandbox Code Playgroud)

我怎么能在Visual Studio中告诉'b'的数据结构有多大?我看到有一些内存诊断窗口,但它只是说当我跳过b的分配时他们无法评估表达式.我打开了Disassembly窗口,可以看到mov op ...

mov         dword ptr [ebp-40h],1
Run Code Online (Sandbox Code Playgroud)

......但不确定信息的含义.我认为dword暗示了大小,也许ptr ebp-40h指向一个地址.有没有办法可以在Visual Studio中查看所有地址,也可以通过查看范围来收集大小?

我知道在这样一个简短的论坛中回答这些问题很难,但感谢您的帮助.

c# memory types

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

单独程序集中的Asp.Net核心本地化资源

我正在尝试使用.NET Core的新本地化功能,但在Microsoft在此处提供的简单示例之外,https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/localization#resource-file-命名

我的Controllers在一个单独的项目ProjectA.Controllers中,而我的共享资源类在一个公共项目ProjectB.Localization中。我已经按照文档中的说明配置了启动类。

我不清楚要为资源文件命名的名称以及确切放置在何处。我已经配置了存储在目录“ Resources”中的选项。是在Web项目中还是我的SharedResource类所在的ProjectB.Localization中?文档说如果是单独的程序集,则应使用完整的名称空间。因此,我将其命名为“ WorldCart.Facilities.Localization.SharedResource.es.resx”,并将其放置在网站的资源文件夹中。

当我运行Web应用程序并在家庭控制器中进行调试时,没有得到翻译后的字符串,而是得到了英语版本。

有任何想法吗?

localization asp.net-core

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

从String []到F#List的高效转换

我是从C#背景来到F#,在不同的列表和集合上稍微落后一点.我最近碰到了一个案例,我需要从字符串[]到'T列表.我最终使用list comprehension来进行演员:

let lines = File.ReadAllLines(@"C:\LinesOText.txt") // returns a string array
let listOLines = [for l in lines -> l] // use list comprehension to get the f# list
Run Code Online (Sandbox Code Playgroud)

有没有更有效的转换方式?

collections f# casting

6
推荐指数
1
解决办法
2676
查看次数

如何使用现有项初始化F#中的序列?

在C#中,您可以初始化一个列表,如下所示:

var list = new List<int> { obj1, obj2, obj3 };
Run Code Online (Sandbox Code Playgroud)

我期待在F#中做类似的事情,但不断收到错误:

let list =  { obj1, obj2, obj3 }
Run Code Online (Sandbox Code Playgroud)

这可能在F#中吗?

f# sequence

6
推荐指数
1
解决办法
6028
查看次数

Docker堆栈部署有关顶级对象映射的错误

随着Docker入门指南,https: //docs.docker.com/get-started/part3/#your-first-docker-composeyml-file ,我遇到了一个问题.我创建了docker-compose.yml文件并验证了内容是否正确:

version: "3"
services:
  web:
    image: joshuabelden/get-started:part2
    deploy:
      replicas: 5
      resources:
        limits:
          cpus: "0.1"
          memory: 50M
      restart_policy:
        condition: on-failure
    ports:
      - "80:80"
    networks:
      - webnet
networks:
  webnet:
Run Code Online (Sandbox Code Playgroud)

我还证实我可以在一群人之外运行我的图像.运行命令后:

 docker stack deploy -c docker-compose.yml getstartedlab
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Top-level object must be a mapping
Run Code Online (Sandbox Code Playgroud)

我似乎无法找到有关错误消息的任何信息.

docker docker-compose

6
推荐指数
4
解决办法
2756
查看次数