小编zim*_*nen的帖子

C#序列化/继承

可能重复:可
序列化继承

序列化是否可继承?

例:

[Serializable]
class A
{
}

class B : A
{
}
Run Code Online (Sandbox Code Playgroud)

如果我尝试序列化/反序列化B类的实例,我会得到一个异常,说明该类未标记为可序列化.因此问题:序列化是否可继承?我只是错过了如何做,或者每个需要序列化的类是否需要明确标记为这样?

c# inheritance serialization

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

WCF服务超时

有没有办法在服务端设置tiemout,以便请求在超过超时时停止处理?我知道我可以在客户端计时请求,但这并不会停止在服务器上处理请求.

我尝试添加以下绑定:

<basicHttpBinding>
    <binding name="timeout" receiveTimeout="00:01:00" closeTimeout="00:01:00" openTimeout="00:01:00" sendTimeout="00:01:00" />
</basicHttpBinding>
Run Code Online (Sandbox Code Playgroud)

我还尝试在system.web节点中添加以下内容(单独与上面一起):

<httpRuntime executionTimeout="60" /> <!-- timeout after 60 seconds -->
Run Code Online (Sandbox Code Playgroud)

wcf timeout

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

对表进行分区以获取日期范围

我有一个用户的历史表,我正在尝试查找用户持有特定用户名的日期范围.该表是一个由触发器填充的审计表,因此每次对用户进行更改时都会有条目,而不仅仅是用户名.我可以这样做以获取每一行的日期范围:

CREATE TABLE #LoginHistory
(
  LoginHistoryID INT IDENTITY(1,1),
  LoginID INT,
  Username VARCHAR(32),
  StartDate DATETIME
)

INSERT INTO #LoginHistory (LoginID, Username, StartDate) VALUES
(1, 't', '2016-01-01'),
(1, 't', '2016-01-02'),
(1, 't', '2016-01-04'),
(1, 'test', '2016-01-05'),
(2, 't', '2016-01-08'),
(2, 'tom', '2016-01-09'),
(1, 'test', '2016-01-15'),
(1, 't', '2016-02-01')

SELECT
    LoginID,
    Username,
    StartDate,
    EndDate = LEAD(StartDate) OVER (PARTITION BY LoginID ORDER BY StartDate ASC)
FROM #LoginHistory
WHERE LoginID = 1
ORDER BY StartDate ASC

DROP TABLE #LoginHistory
Run Code Online (Sandbox Code Playgroud)

输出:

LoginID  Username  StartDate                EndDate
1 …
Run Code Online (Sandbox Code Playgroud)

sql sql-server window-functions sql-server-2012

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

PropertyRef要求ComboBox

在我的一个对话框中,我有以下控件:

<Control Id="EnvironmentComboBox" Type="ComboBox" Sorted="yes" ComboList="yes" Property="ENVIRONMENT" X="25" Y="110" Width="200" Height="15" />
Run Code Online (Sandbox Code Playgroud)

我在其他地方填写ComboBox如下:

<UI>
  <ComboBox Property="ENVIRONMENT">
    <ListItem Text="Development" Value="Development" />
    <ListItem Text="SIT" Value="SIT" />
    <ListItem Text="UAT" Value="UAT" />
    <ListItem Text="Production" Value="Production" />
  </ComboBox>
</UI>
Run Code Online (Sandbox Code Playgroud)

但是,如果我没有创建ComboBox位,MSI仍将构建,并且在安装期间它将失败(2205).因此,我想强制要求拥有一个名为ENVIRONMENT的属性.我试过在我的对话框中添加如下所示的PropertyRef:

<PropertyRef Id="ENVIRONMENT" />
Run Code Online (Sandbox Code Playgroud)

但是,这似乎没有好转<ComboBox Proeprty="ENVIRONMENT">.它将获取一个常规属性(<Property Id="ENVIRONMENT" Value="test" />),但这并没有多大帮助.

有没有办法要求ComboBox定义?

编辑: 为了澄清,我打算将ComboBox定义与Control定义分开,以便可以重用该对话框.

combobox windows-installer wix

5
推荐指数
1
解决办法
1110
查看次数

安装到GAC并在注册表中注册

好吧,我显然错过了一些东西.我正在尝试遵循这一点,以便安装到GAC并提供开发.但是,唯一发生的事情是DLL被放入ProductDirectory.它没有出现在GAC中,也没有添加注册表项.我怎样才能让它发挥作用?

以下是Product.wxs的相关部分.

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Product Id="*" Name="Me.Common" Language="1033" Version="1.0.0.0" Manufacturer="Me" UpgradeCode="ea52947a-0980-435d-a8f5-280d3526cb90">
        <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
    <!-- The feature to install. -->
        <Feature Id="ProductFeature" Title="Me.Common" Level="1">
            <ComponentGroupRef Id="ProductComponents" />
        </Feature>
    </Product>

    <Fragment>
        <Directory Id="TARGETDIR" Name="SourceDir">
            <Directory Id="ProgramFilesFolder">
        <Directory Id="ProductDirectory" Name="Me.Common">
          <Directory Id="GAC" Name="GAC" />
        </Directory>
            </Directory>
        </Directory>
    </Fragment>

    <Fragment>
        <ComponentGroup Id="ProductComponents">
      <Component Id="RunTime_Me.Common" Directory="GAC" Guid="E2B19C22-DC01-432D-85B0-0E4948F95A43">
        <!-- Add to GAC. -->
        <File Id="RunTime_Me.Common"
              Source="$(var.Me.Common.TargetDir)$(var.Me.Common.TargetFileName)"
              Assembly=".net"
              KeyPath="yes" />
      </Component>
      <Component Id="DesignTime_Me.Common" Directory="ProductDirectory" Guid="C1BD8CD1-E834-49D5-B499-D9E313E70669">
        <!-- Add locally. --> …
Run Code Online (Sandbox Code Playgroud)

gac wix

5
推荐指数
1
解决办法
3689
查看次数

如何使用Razor的ReportViewer控件?

我见过很多人说使用iframe或新页面来显示ReportViewer控件.有没有办法在不使用iframe的情况下与我的页面的其余部分一起显示控件?

asp.net-mvc reporting-services razor asp.net-mvc-4

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

我如何在旁边和顶部堆叠div?

我对html或css了解不多,但我做了很多;

在此输入图像描述

我想堆叠div,所以它看起来像这样(请原谅糟糕的绘图);

在此输入图像描述

我用谷歌搜索了如何尝试不同的东西,但喜欢/不喜欢的盒子总是最终没有移动或移动到最左边/非常右边.

<div style="float:left;width:300px;height:350px;text-align:center;">
<div style="float:left;width:500px;height:200px;text-align:center;">
<div id="wrapper">
<div style="align=center;">
<div id="first">1</div>
<div id="second">2</div>
Run Code Online (Sandbox Code Playgroud)

这些是我拥有的三个div.第一个有链接[添加/消息等]

第二个有"thelastgecko"和个人资料文本.

而我正在尝试使用最后一个框来表示喜欢/不喜欢,但无论我做什么都行不通.

html css

5
推荐指数
1
解决办法
232
查看次数

应用程序池将无法运行

我的服务层中有两台服务器位于负载均衡器后面.它们都应该是相同的 - IIS设置相同,AppFabric(保持两个服务热身),在服务帐户或应用程序池标识下运行的应用程序池.在一台服务器上,一切正常.在另一台服务器上,我的三个应用程序池(AppFabric正在预热的两个,在服务帐户下,以及一个只是标准应用程序池而没有默认设置更改的应用程序池)几乎在我启动它们时就停止运行(有时是第一次请求).

每次尝试启动其中一个应用程序池时,我在应用程序日志中收到以下五个错误:

在处理配置路径的托管应用程序服务自动启动期间出错:'MACHINE/WEBROOT/APPHOST/Site/App'.返回的错误消息是:''.工作进程将被标记为不健康并将被关闭.数据字段包含错误代码.

引用的错误代码是80070005.

这实际上是针对相同的站点/应用程序,无论应用程序池是否已启动(尽管在重新创建应用程序池后它可能会更改).

在系统日志中,我在错误(Application pool 'AppPool' is being automatically disabled due to a series of failures in the process(es) serving that application pool.)之前收到以下警告五次:

为应用程序池"AppPool"提供服务的进程报告在应用程序预加载或服务加载期间出现故障.进程ID为'2396'.请确保正确配置应用程序池中的所有应用程序预加载或服务设置.数据字段包含错误编号.

引用的错误代码是80004005.

这里的AppPool是正在启动的.

我试过重新创作; 我已经尝试卸载AppFabric(但我们需要它,所以重新安装但仍然没有去).我没有想法.有什么建议?

编辑:我尝试从工作服务器复制applicationHost.config,但这也不起作用..

EDIT2:其中一个应用程序池在真实用户帐户下运行时有效,但在ApplicationPoolIdentity下运行时无法运行....

(另外,我们遇到的问题是网站运行在2.0以下,应用程序运行在4.0以下.这可能解决了那些作为服务帐户运行的问题.)

iis iis-7

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

使用开放定义从泛型类的属性中获取值

有没有办法使用反射从开放类型获取属性的值?

class Program
{
    static void Main(string[] args)
    {
        var target = new GenericType<string>();
        target.GetMe = "GetThis";
        target.DontCare = "Whatever";

        var prop = typeof(GenericType<>).GetProperty("GetMe");
        var doesntWork = prop.GetValue(target);
    }
}

public class GenericType<T>
{
    public string GetMe { get; set; }
    public T DontCare { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

prop.GetValue(target)抛出以下异常:

无法对 ContainsGenericParameters 为 true 的类型或方法执行后期绑定操作。

我知道我可以这样做target.GetType().GetProperty("GetMe").GetValue(target),但我想知道是否有一种方法可以在不知道类型的情况下获取值。

简单的解决方案是拥有一个仅包含 的非泛型基类GetMe,但我现在无法进行更改。

c# generics reflection

5
推荐指数
1
解决办法
4906
查看次数

如何通过负载均衡器将wsHttpBinding与Message安全性一起使用

我有一个使用Message安全性的负载均衡服务:

<wsHttpBinding>
  <binding>
    <security mode="Message">
      <message clientCredentialType="Windows" establishSecurityContext="false" />
    </security>
  </binding>
</wsHttpBinding>
Run Code Online (Sandbox Code Playgroud)

我对此服务的所有调用都会打开和关闭自己的通道,因此建立安全上下文没有任何好处.

我正在使用WSHttpBinding与服务配置匹配的服务来调用服务:

ws.Security.Mode = SecurityMode.Message;
ws.Security.Transport.ClientCredentialType = HttpClientCredentialType.None;
ws.Security.Message.ClientCredentialType = MessageCredentialType.Windows;
ws.Security.Message.EstablishSecurityContext = false;
Run Code Online (Sandbox Code Playgroud)

这有时会起作用,但有时我会遇到诸如此类的错误

安全上下文令牌已过期或无效.邮件未处理.

要么

安全令牌请求包含无效或格式错误的元素.

我终于发现将EstablishSecurityContext设置为false实际上并不会阻止使用安全上下文令牌.我们的负载均衡器目前不使用粘性会话,我试图避免走这条路.

我确实发现我应该能够在客户端上将NegotiateServiceCredential设置为false,以允许没有粘性会话的负载均衡器.我的服务已在AD帐户下运行,我可以在WSDL中看到它:

<Upn>User@Domain</Upn>
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试将服务标识添加到我的客户端时

EndpointIDentity.CreateUpnIdentity("User@Domain")
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

不支持对在需要Kerberos多重标记的用户帐户下运行的服务进行身份验证.

如何通过负载均衡器调用我的服务?

wcf load-balancing wshttpbinding

5
推荐指数
1
解决办法
563
查看次数