小编fer*_*ero的帖子

为什么这个演员多余?

我有一个方法具有以下重载:

string Call(string function, Dictionary<string, object> parameters, object body)
string Call(string function, Dictionary<string, object> parameters, JObject body)
Run Code Online (Sandbox Code Playgroud)

现在我添加了另一个重载:

string Call(string function)
{
    return Call(function, null, (JObject) null);
}
Run Code Online (Sandbox Code Playgroud)

我添加了一个强制转换,JObject因此编译器知道它应该使用哪个重载.但Visual Studio告诉我演员阵容是多余的.但是如果没有演员,为什么我的电话不明确?

c# casting overloading

71
推荐指数
1
解决办法
7604
查看次数

使用JSON.net进行序列化时忽略接口中定义的属性

我有一个像这样的属性的接口:

public interface IFoo {
    // ...

    [JsonIgnore]
    string SecretProperty { get; }

    // ...
}
Run Code Online (Sandbox Code Playgroud)

我希望SecretProperty在序列化所有实现类时忽略它.但似乎我必须在JsonIgnore属性的每个实现上定义属性.有没有办法实现这一点,而无需将JsonIgnore属性添加到每个实现?我没有找到任何帮助我的序列化设置.

.net c# json.net

13
推荐指数
2
解决办法
6336
查看次数

在Newtonsoft.Json库中获取Raw json字符串

我有这样的json

{
    "name": "somenameofevent",
    "type": "event",
    "data": {
        "object": {
            "age": "18",
            "petName": "18"
        },
        "desct": {
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我有2个像这样的对象

public class CustEvent
{
    [JsonProperty("name")]
    public string Name { get; set; }
    [JsonProperty("type")]
    public string EventType{ get; set; }
    [JsonProperty("data")]
    public SomeData Data{ get; set; }
}

public class SomeData
{
    [JsonProperty("object")]
    public String SomeObject { get; set;}
    [JsonProperty("dsct")]
    public String SomeDesct { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我用来解析json对象Newtonsoft.NET库.以及如何将RAW JSON转换为SomeObject,SomeDesct属性?在JSON中,"data.object ..."是复杂的对象,我想只获得RAW JSON String到这些属性.你能帮助我吗 ?

.net json json.net

12
推荐指数
2
解决办法
8189
查看次数

防止静态文件处理程序拦截类似文件名的URL

在我的Web应用程序中,我有一个如下所示的路由:

routeCollection.MapRoute(
    "AdfsMetadata",                                                // name
    "FederationMetadata/2007-06/FederationMetadata.xml",           // url
    new { controller = "AdfsController", action = "MetaData" });   // defaults
Run Code Online (Sandbox Code Playgroud)

这条路线背后的想法是与Microsoft AD FS服务器(2.0+)更好地协作,当您指定主机名时,此时会查找AD FS元数据.MVC3一切正常.但我们最近将项目升级到MVC4,现在调用此URL会产生404,错误页面上提到的处理程序是StaticFile物理路径D:\path\to\my\project\FederationMetadata\2007-06\FederationMetadata.xml.我假设MVC或ASP.NET"认为"它必须是对静态文件的请求并查找该文件,但它不是文件.数据是动态生成的 - 这就是我将URL路由到控制器操作的原因.问题是即使Phil Haack的Route Debugger也行不通.除了IIS试图访问不存在的物理文件之外,它只是404而没有进一步的信息.

有人有解决方案吗?我只想将此URL路由到控制器操作.

PS:我不是100%确定原因是升级到MVC4,这只是猜测,因为错误发生在升级的大致同一时间,并且相同的路由在另一个仍在使用MVC3的项目中工作.

编辑:

我有一个ControllerFactory需要完整类名的自定义(AdfsController而不是Adfs),所以Controller在这种情况下后缀是正确的.

iis asp.net-mvc asp.net-mvc-routing asp.net-mvc-4

11
推荐指数
1
解决办法
7043
查看次数

Internet Explorer,Json.Net JavaScript日期和毫秒问题

我不确定我是否遗漏了某些东西 - 或IE或Json.Net.

但基本上这是有效的:

new Date("2012-08-03T12:36:54.743Z")

此操作因"无效日期"错误而失败:

new Date("2012-08-03T12:36:54.74Z")

第二个日期存储在SQL Server中:

2012-08-03 12:36:54.740

然后使用Json.Net将其序列化为JSON.Json.Net确实将日期序列化为2012-08-03T12:36:54.74Z,有效地切断了最后的0.

我的问题:

  • 这是IE中的预期行为 - 它需要在毫秒位中使用全部3位数才能工作吗?
  • 这是Json.Net中的预期行为 - 它会在日期中切断最后的0吗?

javascript internet-explorer datetime json.net

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

Wordpress:将Multisite从服务器移动到localhost

我正在尝试将部署的WordPress多站点移动到本地环境.我备份了服务器数据库和文件.在我的本地环境中,我创建了一个新数据库并导入了备份.我还将服务器文件复制到本地计算机.

我做了这些步骤:

  1. 我改的wp-config.php文件,并与新的更新它db-name,db-username,db-password并设置define('DOMAIN_CURRENT_SITE', 'www.mysitename.com');define('DOMAIN_CURRENT_SITE', 'localhost/mysitename');.

  2. option_valuewp-option数据库表中更改为指向我的本地地址.

  3. 我还从.htaccess中删除了这些行:

    # Redirect non-www urls to www
    RewriteCond %{HTTP_HOST} !^www\.mysitename\.com
    RewriteRule (.*) http://www.mysitename.com/$1 [R=301,L]
    
    Run Code Online (Sandbox Code Playgroud)

但是当我转到127.0.0.1/mysitename时,我收到此错误:此网页有一个重定向循环.

当我换define('DOMAIN_CURRENT_SITE', 'localhost/mysitename');define('DOMAIN_CURRENT_SITE', 'localhost');并转到127.0.0.1/mysitename地址时,它会显示phpinfo()页面.

我该如何解决我的问题?

请解释我是否必须在.htaccesswp-config.php文件中设置一些内容.

非常感谢.

php wordpress .htaccess

8
推荐指数
1
解决办法
9433
查看次数

ToString的默认数字格式

是否可以定义一个默认数字格式,每当我将integer(或double等)转换为a String而不指定格式字符串时使用该格式?

C#示例:

int i = 123456;

string s = "Hello " + i;
// or alternatively with string.Format without format definition
string s = string.Format("Hello {0}", i);
Run Code Online (Sandbox Code Playgroud)

ASP.NET Razor示例:

<div>
    Hello @i
</div>
Run Code Online (Sandbox Code Playgroud)

我认为所有这些代码行都隐式使用默认ToString()方法Int32.毫不奇怪,所有这些代码行都会产生"Hello 123456",但我想要"Hello 123,456".

那么我可以指定"N0"默认情况下应该使用它(至少是integer)吗?

我已经找到了问题Set Default DateTime Format c# - 它看起来不错,但它对数字没有帮助.


编辑:我知道我可以编写一个扩展方法,我可以在整个应用程序中使用,但这不是我正在寻找的.我想找到一个属性(也许某处隐藏在CultureInfoNumberFormatInfo这是目前设定为)"G",并使用默认的Int32.ToString()实现.

.net c# cultureinfo number-formatting

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

使用Azure Active Directory - 一个应用程序在本地登录和发布时

我正在使用Azure Active Directory身份验证构建MVC应用程序.当我在本地开发时,我希望能够登录进行测试/开发.应用程序网址就像http://localhost:43400.这也被编码在AD应用Sign-On UrlReply Url.

当我将相同的应用程序部署到服务器时,应用程序URL已更改 - 变得类似myappname.azurewebsites.net,我无法使用相同的AD应用程序登录.我能管理的最好的办法就是通过登录过程,然后AD将我重定向回到localhost:43400错误状态.

有一些PostLogoutRedirectUri属性Startup.Auth.cs,我给应用程序,但它没有任何区别.

有没有使用相同Azure AD的本地应用程序和已部署应用程序的方法?

我可以使用不同的URL和密钥执行2个AD Applica,并web.config在部署中重写值.但这听起来不是最好的解决方案.还有什么我能做的吗?

UPD

这是我所指的位Startup.Auth.cs:

app.UseOpenIdConnectAuthentication(
    new OpenIdConnectAuthenticationOptions
    {
        ClientId = clientId,
        Authority = Authority,
        PostLogoutRedirectUri = postLogoutRedirectUri, // <-- this is coming from web.config, different in dev and prod

        Notifications = new OpenIdConnectAuthenticationNotifications()
        {
            .....

        }
    });
Run Code Online (Sandbox Code Playgroud)

在此处查看完整代码.

在Azure AD应用程序中,我同时尝试将这两个地址作为回复URL: Azure AD应用程序回复URL

但AD只使用其中一个地址进行重定向,即使客户端指定了与其中一个记录匹配的重定向.

c# asp.net oauth azure azure-active-directory

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

无效/自签名证书上类似浏览器的行为

这种感觉就像我找遍了整个网络了,但所有我发现是关于如何提示接受无效或自签名证书自动.(使用自定义HttpClientSSLSocketFactory- 我已经有了工作.)

但我想要的是我的应用程序是用户获得类似浏览器的对话框,询问"你真的想要信任这台服务器吗?在这里,看看它的证书." (但仅当默认检查不信任证书时.)

然后证书应该放在应用程序的证书存储区中,以便下次自动接受.

所以我需要知道的是:

  • 如何下载特定主机/端口组合的证书(链)(以便能够向用户显示)?
  • 如何以某种方式存储证书,以便以后加载它KeyStore

这是我在应用程序中计划的工作流程:

  1. 使用我的自定义向服务器发送请求HttpClient.也许证书是系统信任的,或者已经存储在我的商店中(如果是,请转到4).
  2. 如果请求因SSL问题而失败,请向用户显示证书并询问是否信任此连接.
  3. 如果用户选择信任,请将证书存储在我的商店中并转到1.
  4. 万岁,连接即可使用.

所以谁知道怎么做?

ssl android ssl-certificate certificate-store

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

无法使用Management REST API升级Azure部署(SSL证书问题)

我目前正致力于为Windows Azure托管服务的自动部署过程.使用调用来完美地创建.cspkg.cscfg文件msbuild.现在我正在编写一个小型.NET控制台应用程序,它应该使用Management REST API将这些文件部署到Azure.

关于API本身没有问题.我可以使用我的一个管理证书向API发送请求.我将.cspkg文件上传到Azure BLOB存储,然后尝试调用Upgrade Deployment.但每次我尝试时,都会收到一条"400 Bad Request"回复,指出没有找到带有指纹xy的证书.此证书是我用于自定义域(DNS CNAME)的HTTPS 的SSL证书(不是管理证书).

而现在,整个事情变得有趣:

当我在Visual Studio中使用"发布"命令部署文件时,没有问题.(我比较了VS和我的输出中的.cscfg/ .cspkgfiles msbuild:除了几个GUID之外,它们是相同的).此外,在我的浏览器中使用Silverlight Management thingy,我甚至可以上传我使用API​​无法上传的生成文件.

当我使用该List Certificates调用检索所有证书的列表时,显然缺少证书.我也可以使用该Get Certificate调用检索其数据.

那么为什么Azure一直告诉我在使用Upgrade Deployment呼叫时没有找到证书?有人经历过类似的事吗?有没有人对我暗示?提前致谢.

PS:这就是Azure在我使用API​​时所说的:

<Error xmlns="http://schemas.microsoft.com/windowsazure" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
    <Code>BadRequest</Code>
    <Message>The certitficate with thumbprint 7b232c4a2d6e3deadbeef120d5dbc1fe8049fbea was not found.</Message>
</Error>
Run Code Online (Sandbox Code Playgroud)

PPS:是的,答复中的单词certitficate不是certificate.

api rest azure ssl-certificate

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

MVC中的Pdf Viewer在View中显示pdf内容

我有一个名为ShowDocument.cshtml的视图.

我想在视图中显示pdf文档.首先,我将html页面转换为.pdf,其中包含以下信息:

控制器中的代码是:

Stream stream = HtmlToPdfBuilder.GetHtmlForm(model.Type, 16);
Run Code Online (Sandbox Code Playgroud)

如果我返回File(stream, "application/pdf", "Authorization.pdf"),我将保存,保存为对话框.

我不想要这个对话框,我只想在页面内显示pdf内容.

那么MVC中是否有任何pdf查看器,以便我只能使用某些控件在View中显示内容

.net asp.net-mvc pdf-viewer asp.net-mvc-3 asp.net-mvc-4

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

何时使用IDataReader以及何时使用DataReader?

我知道这IDataReader是界面,DataReader是具体的类型,但我仍然不知道何时使用每一个.我需要迭代使用Datareader和两者可能的数据IDataReader.有没有更好的方法来决定何时使用界面或具体类型?

c#

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

在ASP.NET MVC 3中通过PowerShell进行O365:抛出了MicrosoftOnlineException

我有一个ASP.NET MVC 3应用程序,它使用PowerShell连接到Office 365以检索有关用户许可证的一些详细信息.

代码本身在很多情况下都适用:

  • 我本地IIS中的项目有效
  • 使用该库的LINQPad中的一段代码可以在我的机器上运行
  • 使用该库的LINQPad中的一段代码可在目标服务器上运行

它不起作用的地方当然是它真正应该工作的唯一地方:目标服务器上的IIS.

调用Connect-MsolServicecmdlet 时,我总是遇到异常.问题是异常并没有告诉我任何事情.

异常类型是

Microsoft.Online.Administration.Automation.MicrosoftOnlineException

并且消息是

抛出了"Microsoft.Online.Administration.Automation.MicrosoftOnlineException"类型的异常

这是没用的.

我在代码中使用的Office 365用户帐户始终相同.用于启动IIS的用户帐户也始终相同(本地系统).

我将PowerShell代码执行包装在一个名为的类中PowerShellInvoker.它的代码可以在这里找到.

这是连接到Office 365的代码:

var cred = new PSCredential(upn, password);

_psi = new PowerShellInvoker("MSOnline");
_psi.ExecuteCommand("Connect-MsolService", new { Credential = cred });
Run Code Online (Sandbox Code Playgroud)

实际上没有抛出 Exception ,错误发现在Error管道的属性中.(见本PowerShellInvoker课程第50ff行.)

问题是我不知道什么是错的,特别是因为当我使用LINQPad时相同的代码工作.谷歌的搜索结果也无济于事.

服务器在带有IIS 7.5的Windows Server 2008 R2 Datacenter SP1上运行.

c# powershell asp.net-mvc-3 office365

3
推荐指数
1
解决办法
1424
查看次数