我的控制台应用程序使用依赖于Newtonsoft.Json v4.5.0.0的System.Net.Http.Formatting v5.1.0.0.我的应用程序包括Newtonoft.Json的v6.0.0.0(由于其他原因).
为了使System.Net.Http.Formatting使用新的Newtonsoft.Json版本,我添加了一个程序集重定向到App.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
...
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
Run Code Online (Sandbox Code Playgroud)
我仍然得到以下异常:
A first chance exception of type 'System.IO.FileLoadException' occurred in System.Net.Http.Formatting.dll
Additional information: Could not load file or assembly 'Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
Run Code Online (Sandbox Code Playgroud)
融合日志显示正确的程序集已加载但由于不匹配而失败:
*** Assembly Binder Log Entry (2014.08.10. @ 13:13:25) ***
The operation failed. …Run Code Online (Sandbox Code Playgroud) 这个问题:从Java中的方法返回状态标志和消息的最佳方法与我的相似,但我会用PHP而不是Java(这可能会略有不同).
问题:
有一种方法可以有一个成功的结果(这可能会变成更成功的结果)或一个"有问题"的结果.后者意味着操作失败,但知道原因也很重要.想象一下Authentication类的方法:
public function login($name, $password)
{
if (successful_authentication)
{
report success
}
else
{
report failure, explain why (e.g. wrong name/pass, user banned)
}
}
Run Code Online (Sandbox Code Playgroud)
为成功和失败回报真假都是微不足道的,但如何报告失败的原因呢?
可能的解决方案:
成功时返回true,失败时返回一个字符串,错误代码表示问题:使用PHP可以通过这种方式获得漂亮的干净块,如下所示:
$loginStatus = $auth->login('name', 'pass');
if ($loginStatus === true)
{
doSomething();
}
else
{
if ($loginStatus == 'wrong_login_data')
...
elseif ($loginStatus == 'banned')
...
// or with an array full of error messages:
echo $erroMessages[$loginStatus];
}
Run Code Online (Sandbox Code Playgroud)返回一般状态(状态)对象:非常优雅的解决方案以及面向未来的(如果状态数量不同或以后应该返回其他数据,则没有问题),也许是最好的一个:
$loginStatus = $auth->login('name', 'pass')
if ($loginStatus->isSuccess)
...
else
echo $errorMessages[$loginStatus->errorCode]; …Run Code Online (Sandbox Code Playgroud)假设有一个像这样的声明(它实际上是Bootstrap):
@media screen and (min-width: 768px) {
.navbar {
padding-top: 0;
}
}
Run Code Online (Sandbox Code Playgroud)
是否可以像访问其他类或mixin一样访问此媒体查询中的.navbar(它还有一个声明在它之外)?我想在其他地方重新使用它的声明(好吧,不完全是这个,但你明白了:-)),例如:
.left-nav {
.navbar; // Use the one from the media query here.
}
Run Code Online (Sandbox Code Playgroud)
LESS可以实现吗?
我已经看到了一个非常相似的问题,虽然这里的区别在于我不能重构
.navbar在媒体查询之外,因为这是在Bootstrap的LESS文件中.我理解帽子LESS并不关心媒体查询,因为它们只是另一种选择器; 但是如何在这些选择器中访问声明(我尝试了一些明显的但没有奏效).
任何帮助,将不胜感激.
Azure网站有一个由Azure提供的默认"站点URL",类似于mysite.azurewebsites.net.是否可以从网站内部(即从ASP.NET应用程序)获取此URL?
Environment和HttpRuntime类中有几个属性包含网站名称(例如"mysite"),因此可以轻松访问.当不是默认值时,事情变得复杂,但例如访问站点的暂存槽(其网站URL如mysite-staging.azurewebsites.net).
所以我只是想知道是否有直接获取此站点URL的简单方法.如果没有,那么使用其中一个提到的类来获取站点名称然后以某种方式检测站点槽(例如可以通过Azure门户的配置值设置)将是解决方案
返回后,以下(Web)角色入口点会导致抛出以下异常.
public class WebRole : RoleEntryPoint
{
public override bool OnStart()
{
Task.Run(() =>
{
// Anything can be here, but the lamdbda can be empty too...
}).Wait();
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
例外:
mscorlib.dll中出现'System.Threading.WaitHandleCannotBeOpenedException'类型的第一次机会异常
附加信息:不存在给定名称的句柄.
很明显,这是从框架中抛出的.这个例外似乎是无害的,我没有遇到任何问题.
我还好奇,为什么会这样呢?有没有办法在角色启动方法中运行异步代码而不会导致此类异常?
编辑:
这是异常的调用堆栈:
> mscorlib.dll!System.Threading.EventWaitHandle.OpenExisting(string name, System.Security.AccessControl.EventWaitHandleRights rights) Unknown
Microsoft.WindowsAzure.ServiceRuntime.dll!Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.StartRoleInternal() Unknown
Microsoft.WindowsAzure.ServiceRuntime.dll!Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.StartRole() Unknown
Microsoft.WindowsAzure.ServiceRuntime.dll!Microsoft.WindowsAzure.ServiceRuntime.Implementation.Loader.RoleRuntimeBridge.StartRole.AnonymousMethod__2() Unknown
mscorlib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx) Unknown
mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx) Unknown
mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state) Unknown
mscorlib.dll!System.Threading.ThreadHelper.ThreadStart() Unknown
[Native to …Run Code Online (Sandbox Code Playgroud) 我们每天开始收到多个此类错误,出现在事件日志中:
无效的JSON原语:alihack.在System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializePrimitiveObject()在System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(深度Int)在System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize(字符串输入,的Int32 depthLimit,JavaScriptSerializer串行化器)在System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer串行器,字符串输入,类型类型,的Int32 depthLimit)在System.Web.Mvc.JsonValueProviderFactory.GetDeserializedObject(controllerContext controllerContext)在System.Web.Mvc.JsonValueProviderFactory. System.Web.Mvc.ValueProviderFactoryCollection.GetValueProvider(ControllerContext controllerContext)中的System.Web.Mvc.ControllerBase.get_ValueProvider()处的System.Web.Mvc.ControllerActionInvoker.GetParameterValue(ControllerContext controllerContext,ParameterDescriptor parameterDescriptor)中的GetValueProvider(ControllerContext controllerContext) .Web.Mvc.Controlle System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult的System.Web.Mvc.Async.AsyncControllerActionInvoker.<> c__DisplayClass21.b__19(AsyncCallback asyncCallback,Object asyncState)中的rActionInvoker.GetParameterValues(ControllerContext controllerContext,ActionDescriptor actionDescriptor)
1.CallBeginDelegate(AsyncCallback callback, Object callbackState) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase1.Begin(AsyncCallback)回调,对象的状态,的Int32超时)在System.Web.Mvc.Async.AsyncControllerActionInvoker.BeginInvokeAction(ControllerContext controllerContext,字符串actionName,AsyncCallback的回调,对象状态)在System.Web.Mvc.Controller.b__1c(的AsyncCallback的AsyncCallback,对象asyncState, System.Web处的System.Web.Mvc.Controller.BeginExecuteCore1.CallBeginDelegate(AsyncCallback callback, Object callbackState) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase(AsyncCallback回调,对象状态)的System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid 1.Begin(AsyncCallback回调,对象状态,Int32超时)中的ExecuteCoreState innerState). System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsy上的Mvc.Controller.b__14(AsyncCallback asyncCallback,Object callbackState,Controller controller)1.CallBeginDelegate(AsyncCallback callback, Object callbackState) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBaseSystem.Web.Mvc.Controller.System.Web.Mvc.Async上的System.Web.Mvc.Controller.BeginExecute(RequestContext requestContext,AsyncCallback callback,Object state)中的ncVoid 1.Begin(AsyncCallback回调,对象状态,Int32超时) System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid上的System.Web.Mvc.MvcHandler.b__4(AsyncCallback asyncCallback,Object asyncState,ProcessRequestState innerState)中的1.CallBeginDelegate(AsyncCallback callback, Object callbackState) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase.IAsyncController.BeginExecute(RequestContext requestContext,AsyncCallback callback,Object state)1.Begin(的AsyncCallback回调,对象的状态,的Int32超时)在System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase HttpContext的,AsyncCallback的回调,对象状态)在System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContext的HttpContext的,AsyncCallback的回调,对象状态)在Orchard.Mvc.Routes.ShellRoute.HttpAsyncHandler.BeginProcessRequest(Http)中的System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext上下文,AsyncCallback cb,Object extraData)上下文语境,AsyncCallback的CB,而额外的对象)在System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()在System.Web.HttpApplication.ExecuteStep(IExecutionStep步骤,布尔逻辑completedSynchronously)
请求转到http://example.com/ali.txt.请求的有效负载中应该有其他内容,因为只需正确打开此URL就会生成404.
这有什么值得担心的吗?我可以,我应该防止这样的错误发生,而是返回一个错误的请求,例如?为什么这种反序列化首先发生?
我的问题是当一个Task有一个Task.WhenAll()调用(运行其他任务)时,WhenAll()行让消费代码继续执行,这与我的预期不同.因此,当命中Task.WhenAll()时,以下代码立即输出"finished",而不是在其参数中的所有任务完成之后.
// Just a simple async method
public Task DoWorkAsync()
{
return Task.Factory.StartNew(
() =>
{
// Working
});
}
// This one used the previous one with Task.WhenAll()
public Task DoLoadsOfWorkAsync()
{
return Task.Factory.StartNew(
async () =>
{
// Working
// This line makes the task return immediately
await Task.WhenAll(DoWorkAsync(), DoWorkAsync());
// Working
});
}
// Consuming code
await DoLoadsOfWorkAsync();
Console.WriteLine("finished");
Run Code Online (Sandbox Code Playgroud)
我希望在执行DoLoadsOfWorkAsync()的最后一行时调用WriteLine().
我究竟做错了什么?提前致谢.
我想git在内部存储CLRF行结束样式的文本文件,我不只是想在工作目录中看到这样的行结尾(但WD也应该包含CRLF文件).什么是.gitattributes配置才能实现这一目标?
我需要这个,所以存储库可以与一个也在内部使用CRLF的Mercurial无缝同步(由于原始文件是这样的).
在浏览了我在网上找到的所有可能的配置后,包括这里,我找不到可以产生CRLF的解决方案.最后,文件最终存储为LF.我尝试了以下.gitattributes文件:
* text=
* text eol=crlf
Run Code Online (Sandbox Code Playgroud)
还试过text = auto,text = crlf甚至没有第一行,没有运气.我还重新克隆了改变之间的回购.
谢谢.
编辑:在我发布此文章后的5秒内,我发现了另一个似乎正在运行的代码段:
*.* -crlf
Run Code Online (Sandbox Code Playgroud)
但是我不确定这到底是做什么的.有人可以确认这是我想要的,以后不会咬我吗?
我想在我的 ASP.NET (MVC) 应用程序中设置Cache-Control标头public。问题是有代码(我无法更改)之前设置了这样的缓存策略:
var response = htmlHelper.ViewContext.HttpContext.Response;
response.Cache.SetExpires(System.DateTime.UtcNow.AddDays(-1));
response.Cache.SetValidUntilExpires(false);
response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
response.Cache.SetCacheability(HttpCacheability.NoCache);
response.Cache.SetNoStore();
Run Code Online (Sandbox Code Playgroud)
后面我找不到覆盖这个的方法,因为无论我如何尝试设置缓存控制,上面的都会生效。例如,以下任何一项都不能对抗先前禁用的缓存:
httpContext.Response.Headers["Cache-Control"] = "public";
var cache = httpContext.Response.Cache;
cache.SetExpires(cacheItem.ValidUntilUtc);
cache.SetValidUntilExpires(true);
cache.SetRevalidation(HttpCacheRevalidation.None);
cache.SetCacheability(HttpCacheability.Public);
cache.SetMaxAge(cacheItem.ValidUntilUtc - _clock.UtcNow);
Run Code Online (Sandbox Code Playgroud)
有没有办法以某种方式覆盖或重置缓存策略?
我想在Azure网站上使用IIS URL重写模块从Web.config设置一个请求标头(确切地说是HTTP_HOST).基本上我想在我的网站的Web.config中有这样的东西:
<system.webServer>
<rules>
<clear />
<rule name="My rule" enabled="true">
<match url=".*" />
<serverVariables>
<set name="HTTP_HOST" value="my value" />
</serverVariables>
<action type="None" />
</rule>
Run Code Online (Sandbox Code Playgroud)
这会导致不允许设置HTTP_HOST的错误.这是正常的,对于标准IIS,下一步是将HTTP_HOST <allowedServerVariables>直接或通过AppCmd 添加到applicationhost.config 的元素.但是,我无法找到任何能够以某种方式访问此配置的提示.
是否有可能以某种方式修改apphost配置,或以其他方式添加允许的服务器变量?
使用DotLiquid库,这是关于Liquid安全性的问题。
假设我的视图模型如下(伪代码):
class MyViewModel
public string MyField
public string MyMethod()
Run Code Online (Sandbox Code Playgroud)
...,然后将MyViewModel对象传递给Liquid模板,其中将MyField设置为可从模板内部访问(以便模板可以读取其内容)。
我的假设是答案不是所有问题,但我想确定。
谢谢。
asp.net ×4
c# ×4
azure ×2
.net ×1
asp.net-mvc ×1
async-await ×1
caching ×1
cracking ×1
dotliquid ×1
git ×1
iis ×1
less ×1
line-endings ×1
liquid ×1
mercurial ×1
php ×1
return-value ×1
state ×1
status ×1
task ×1