小编Kap*_*pol的帖子

如何发生"堆栈溢出",如何防止它?

如何发生堆栈溢出以及确保它不会发生的最佳方法是什么,或者是哪种方法可以防止,特别是在Web服务器上,但其他示例也会很有趣?

memory stack-overflow

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

我可以阻止MVC Core中的异步代码吗?

我们都知道斯蒂芬克莱里关于阻止异步代码的着名博文.在MVC 5中,以下代码在请求时死锁Home/Index:

public class HomeController : Controller
{
    public string Index()
    {
        var model = AsyncMethod();
        return model.Result;
    }

    private async Task<string> AsyncMethod()
    {
        await Task.Run(() => Thread.Sleep(2000));
        return "Hello";
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,完全相同的代码在MVC Core Web应用程序中不会死锁.响应返回Hello.为什么?MVC Core是否允许多个线程在一个请求上下文中同时运行?在MVC Core中开发时,不要阻止异步代码短语过时吗?

c# async-await asp.net-core-mvc

13
推荐指数
1
解决办法
1058
查看次数

指定空导出列表时有用吗?

通过仅指定一对括号作为导出列表,可以不导出模块的名称:

module MyModule () where
Run Code Online (Sandbox Code Playgroud)

在哪些情况下这会有用吗?据我所知,任何文件导入MyModule都无法使用内部声明的任何函数或类型MyModule.在这一点上似乎是语言的一个无用的功能,但我想这是有原因的.

haskell module

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

通过FXML的JavaFX ImageView不起作用

ImageView在使用FXML 加载图像时遇到问题.

我的控制器类:

public class BoxViewController {
    @FXML
    private Label label_boxID;

    @FXML
    private ImageView boximage;

    public void initData(ObservableList<BoxProperty> observableList,
                         BoxService sBox, 
                         TableView tableview) {
        this.label_boxID.setText(
            String.valueOf(this.boxproperty.getPboxid()));

        Image image = new Image("boximage.jpg");
        this.boximage = new ImageView();
        this.boximage.setImage(image);
    }
}
Run Code Online (Sandbox Code Playgroud)

因此,使用文本设置标签有效,但图像不会出现在我的ImageView中.对于ImageView,我在FXML文件中添加了一个ID:

 <ImageView fx:id="boximage" 
            disable="false" 
            fitHeight="150.0" fitWidth="200.0"
            layoutX="69.0" layoutY="322.0" 
            pickOnBounds="true" 
            preserveRatio="true" />
Run Code Online (Sandbox Code Playgroud)

我很困惑,为什么这不起作用,因为标签工作,但图像不会加载.
我还检查了是否boximage为空,但事实并非如此.也没有例外.

javafx image imageview fxml

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

你能利用名为`var`的类的隐式类型变量吗?

我刚刚发现可以将关键字var用作类名:

public class var // no problem here
{
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我重载隐式强制转换运算符,我可以以一种有趣的方式使用我的类:

namespace MyApp
{
    class Program
    {
        static void Main(string[] args)
        {
            var x = 1; // var is of type MyApp.var
        }
    }

    public class var
    {
       public implicit operator var(int i)
       {
           return new var();
       }
    }
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,是否仍然可以以某种方式使编译器推断出类型?这篇博客文章指出它是不可能的(转到以"或者,另一个例子"开头的段落),但也许自2009年以来发生了变化?

c# var

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

为什么基类事件可以调用私有方法?

我有一个关于提升基类事件的问题.我目前正在阅读MSDN C#编程指南,我无法从下面的文章中理解一件事:

http://msdn.microsoft.com/en-us/library/vstudio/hy3sefw3.aspx

public void AddShape(Shape s)
{
    _list.Add(s);
    s.ShapeChanged += HandleShapeChanged;
}
Run Code Online (Sandbox Code Playgroud)

好的,所以我们用一个事件注册委托,我们将在引发事件时调用私有方法HandleShapeChanged.

public void Update(double d)
{
    radius = d;
    area = Math.PI * radius * radius;
    OnShapeChanged(new ShapeEventArgs(area));
}

protected override void OnShapeChanged(ShapeEventArgs e)
{
    base.OnShapeChanged(e);
}
Run Code Online (Sandbox Code Playgroud)

在这里,我们调用基类方法OnShapeChanged,它将成功触发事件.但是事件基于Shape类,那么它如何访问HandleShapeChanged方法,这是私有的?

我刚刚开始学习这门语言,所以请耐心等待.我对这个例子的理解可能远远不够.

c# events base

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

尽管存在其他限制,为什么可以将部分方法分配给委托?

我知道标题可能不完全清楚,但我不想让它太久.

在考虑对部分方法的限制时,有一件事让我感到困惑.在我看来,规则是不一致的.你可能知道:

部分方法必须始终具有返回类型void,并且它们不能具有使用out修饰符标记的任何参数.这些限制已到位,因为在运行时,该方法可能不存在,因此您无法将变量初始化为方法可能返回的内容,因为该方法可能不存在.同样,您不能拥有out参数,因为该方法必须初始化它并且该方法可能不存在.[1]

这对我来说听起来很明智.但与此同时:

如果没有实现部分方法声明,则您不能拥有任何尝试创建引用partial方法的委托的代码.同样,原因是该方法在运行时不存在.[1]

起初,所有这些规则似乎遵循相同的编译器逻辑.但是有一点不同.如第二个引文中所述,编译器仅在没有部分方法的方法实现时才发出错误.为什么它不能在其他场景中检查编译时的实现?当使用部分方法时,这将允许更大的灵活性,并且所有规则背后的逻辑将是相同的.

我担心我能得到的唯一答案是"因为它是如何实施的",但也许还有更多的东西呢?

[1] CLR来自C#,第四版

c# partial-methods

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

如何基于WSDL从C#中使用Web服务(SOAP 1.1,WS-Security)?

我有一个Web服务的WSDL(https://facturaelectronica.dian.gov.co/habilitacion/B2BIntegrationEngine/FacturaElectronica/facturaElectronica.wsdl),它指定它是SOAP 1.1并且应该使用WS-Security.

生成的SOAP标头应该像这样的样本:

<soapenv:Header>
  <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401wss-wssecurity-secext-1.0.xsd">
    <wsse:UsernameToken>
      <wsse:Username>8ac82326-3016-430f-8d69-9efc4bcefd8f</wsse:Username>
      <wsse:Password>6361b7b5322acb07ced00a35a85a4cc5183da3a42ede0b07f5780 67a18425a55</wsse:Password>
      <wsse:Nonce>FmbZRkx1jh2A+imgjD2fLQ==</wsse:Nonce>
      <wsu:Created>2015-07-31T16:34:33.762Z</wsu:Created>
    </wsse:UsernameToken>
  </wsse:Security>
</soapenv:Header>
Run Code Online (Sandbox Code Playgroud)

有关如何在C#中执行此操作的任何建议?(试图使用WSE3.0和WCF,但没有工作)

谢谢.

路易斯

c# ws-security web-services soap-client

6
推荐指数
0
解决办法
1334
查看次数

使用无符号变量 - for循环

我有一个关于为for循环内的变量赋值的问题.据我所知,当有可能在尚未分配变量时,编译器会发出此错误消息,如Microsoft所述.

请注意,当编译器遇到可能导致使用未分配变量的构造时,即使您的特定代码没有,也会生成此错误.

我的代码看起来像这样:

static void Main(string[] args)
{
    int i;

    for (int j = 0; j <= 5; j++)
    {
        i = j;
    }

    Console.WriteLine(i.ToString());

    Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)

我认为即使在这个特定的场景中i会被赋值,编译器也不会检查for语句中的实际条件,这意味着它会对待它

for (int j = 0; j <= -1; j++)
Run Code Online (Sandbox Code Playgroud)

一样的?

c#

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

Azure 应用服务部署版本 4 - ERROR_USER_NOT_AUTHORIZED_FOR_CREATEAPP

这是这个问题的后续问题。原始问题中的答案对我有所帮助,但我被困在其他地方。提醒一下,我想使用发布配置文件部署我的应用程序。我在 Azure 中的 Web 应用程序在 wwwroot 中有两个子文件夹,其中之一称为backend。我想将我的应用程序部署到该文件夹​​。我不确定为什么 msdeploy 想要创建任何东西,因为 Web 应用程序已经存在 - 我只需要在后端文件夹中获取工件。

这是日志的相关部分(一些名称更改为xyz):

2018-06-14T09:19:25.0295238Z 开始执行 msdeploy.exe

2018-06-14T09:19:25.0323018Z“C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe”-source:package='D:\a\r1\a\artifacts\drop\xyz.zip ' -dest:auto,computerName="https://xyz.scm.azurewebsites.net:443/msdeploy.axd?site=xyz/backend",userName="$xyz",password="***",authtype ="basic",includeAcls="False" -verb:sync -disableLink:AppPoolExtension -disableLink:ContentExtension -disableLink:CertificateExtension -setParamFile:"D:\a\r1\a\artifacts\drop\xyz.SetParameters.xml" - enableRule:DoNotDeleteRule -retryAttempts:6 -retryInterval:10000

2018-06-14T09:19:25.6154385Z 信息:使用 ID '89f1210b-39ba-4758-b7ee-76a06407a503' 连接到远程服务器。

2018-06-14T09:19:28.0800802Z 信息:创建应用程序(默认网站)

2018-06-14T09:19:28.2012951Z ##[调试]rc:1

2018-06-14T09:19:28.2013216Z ##[调试]rc:1

2018-06-14T09:19:28.2013360Z ##[调试]成功:假

2018-06-14T09:19:28.2013523Z ##[调试]成功:假

2018-06-14T09:19:28.2073234Z ##[错误]无法将 Web 包部署到应用服务。

2018-06-14T09:19:28.2081930Z ##[debug]Processed: ##vso[task.issue type=error;]无法将 Web 包部署到应用服务。

2018-06-14T09:19:28.2082198Z ##[调试]{}

2018-06-14T09:19:28.2082470Z ##[debug]System.DefaultWorkingDirectory=D:\a\r1\a

2018-06-14T09:19:28.2083178Z ##[error]错误代码:ERROR_USER_NOT_AUTHORIZED_FOR_CREATEAPP 更多信息:使用 Web 管理服务连接时,无法使用指定的提供程序(“createApp”)完成操作。如果服务器管理员未授权用户执行此操作,则会发生这种情况。createApp http://go.microsoft.com/fwlink/?LinkId=178034 了解更多信息: …

azure azure-web-app-service azure-pipelines-release-pipeline

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