我将filevistacontrol添加到我的asp.net MVC Web应用程序中.
我有一个在路由中被忽略的media.aspx页面
routes.IgnoreRoute("media.aspx");
Run Code Online (Sandbox Code Playgroud)
这可以成功运行并提供标准的webforms页面.
添加filevistacontrol后,我似乎无法忽略控件对其web服务的任何调用.
例如,以下ignoreRoute似乎仍然被MvcHandler接收.
routes.IgnoreRoute("FileVistaControl/filevista.asmx/GetLanguageFile/");
Run Code Online (Sandbox Code Playgroud)
抛出的异常是:
'The RouteData must contain an item named 'controller' with a non-empty string value'
Run Code Online (Sandbox Code Playgroud)
提前致谢.
使用WCF而不是ASMX Web服务有什么好处?
有什么指针吗?
我有一个ASP .NET Web应用程序,后端正在与ASMX Web服务进行通信.我们已计算,初始请求的平均等待时间为20秒.我想知道是否有一种方法可以将Web服务发送到预编译的服务器,从而无需编译.
我们还注意到IIS倾向于回收其工作线程,这也会导致编译.流程本身不会经常访问,但它需要更快.
有什么想法吗?
提前致谢
更新:感谢所有的建议,我尝试过其中的一些,这就是我找到的.回收时间关闭/修补是危险的,因为我不希望线程只是无所事事.经过进一步检查,该网站正在进行预编译,所以我的问题是为什么Web服务有一个初始的启动时间?
现在:倾向于下面的热身脚本建议
更新:该服务正在来自其他计算机上的Web服务器.我们只看到初始请求的问题.
我一直在尝试在过去的2-3个月内创建一个稳定的Web服务应用程序.大约2个月前,我选择转移到WCF以利用单实例Web服务.
自从采取这种行动以来,我遇到了一些部署到IIS 6场景的麻烦.不幸的是,因为大多数真正的客户端仍然使用Windows Server 2003和IIS 6.我一直在收到您可能想象的每个WCF错误.
客户的耐心很薄,很快就会发现我们无法提供可靠的解决方案.
我几乎决定回到ASMX服务,至少工作,并没有遭受如下的事情:
序列已由远程端点终止.已超出用户指定的特定邮件的最大重试次数.因此,可靠的会话无法继续.可靠的会议出了问题.
通信对象System.ServiceModel.Channels.ReplyChannel不能用于通信,因为它已被中止
列表继续......在我回到ASMX之前,是否有任何令人信服的理由坚持使用WCF,因为按照这个速度,我们可以通过这种技术让大客户流失?
我有一些代码,我希望在调用ASMX函数的生命周期中尽早执行.对于我们的ASPX页面,此代码位于基类的Page_Init()函数中,所有ASPX页面都从该函数继承.
ASMX是否与ASPX的Page_Init()函数等效?
更好的是,是否有像ASPX一样的ASMX生命周期图? http://msdn.microsoft.com/en-us/library/ms178472.aspx
如果有一个ASMX等效于Page_Init(),我假设我可以在一个公共基类中实现代码,我的所有ASMX类都可以从中继承,更正吗?
编辑: 很好的回应 - 感谢您的帮助!
在常规aspx页面,我有活动,如Page_Init,Page_Unload等,这发生在一个定义良好的秩序.
我有一个asmx提供[WebMethod()]s 的页面.是否存在类似的事件?特别是,一些允许我初始化一些数据(如Page_Load)并进行一些清理(如Page_Unload)的事件将非常有用.
(据我所知,asmx代码隐藏类的构造函数似乎在每个WebMethod请求上被调用,即,为每个WebMethod请求创建一个新实例,但这只是一个观察而不是我发现的东西在某处记录...)
这是Visual Studio中的一个C#Web服务项目,已经存在了很多年.今天它开始在Visual Studio中启动时抛出异常,但只有在附加调试器时才会抛出异常.
例外是:
System.StackOverflowException was unhandled
Message: An unhandled exception of type 'System.StackOverflowException' occurred in mscorlib.dll
Run Code Online (Sandbox Code Playgroud)
这是Visual Studio 2013 Update 3.
堆栈跟踪的相关部分:
System.Runtime.Serialization.dll!System.Runtime.Serialization.Json.JsonDataContract.WriteJsonValue(System.Runtime.Serialization.XmlWriterDelegator jsonWriter, object obj, System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson context, System.RuntimeTypeHandle declaredTypeHandle) Unknown
System.Runtime.Serialization.dll!System.Runtime.Serialization.XmlObjectSerializerWriteContext.InternalSerialize(System.Runtime.Serialization.XmlWriterDelegator xmlWriter, object obj, bool isDeclaredType, bool writeXsiType, int declaredTypeID, System.RuntimeTypeHandle declaredTypeHandle) Unknown
System.Runtime.Serialization.dll!System.Runtime.Serialization.XmlObjectSerializerWriteContext.InternalSerializeReference(System.Runtime.Serialization.XmlWriterDelegator xmlWriter, object obj, bool isDeclaredType, bool writeXsiType, int declaredTypeID, System.RuntimeTypeHandle declaredTypeHandle) Unknown
[Lightweight Function]
System.Runtime.Serialization.dll!System.Runtime.Serialization.Json.JsonDataContract.WriteJsonValue(System.Runtime.Serialization.XmlWriterDelegator jsonWriter, object obj, System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson context, System.RuntimeTypeHandle declaredTypeHandle) Unknown
System.Runtime.Serialization.dll!System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeAndVerifyType(System.Runtime.Serialization.DataContract dataContract, System.Runtime.Serialization.XmlWriterDelegator xmlWriter, object obj, bool verifyKnownType, System.RuntimeTypeHandle declaredTypeHandle, System.Type …Run Code Online (Sandbox Code Playgroud) 我陷入困境.我的代码如下:
更新:它不是关于如何使用数据缓存,我已经在使用它和它的工作,它关于扩展它所以该方法不会在到期时间之间调用和从外部源获取新数据
object = (string)this.GetDataFromCache(cache, cacheKey);
if(String.IsNullOrEmpty(object))
{
// get the data. It takes 100ms
SetDataIntoCache(cache, cacheKey, object, DateTime.Now.AddMilliseconds(500));
}
Run Code Online (Sandbox Code Playgroud)
因此,如果项目过期,用户点击缓存并从中获取数据并从服务中获取数据并保存以防万一,问题是,当有待处理的请求(请求正在进行)时,服务发送另一个请求,因为对象已过期.在最后,应该有最多2-3个呼叫/秒,并且每秒有10-20个呼叫到外部服务.
有没有最佳的方法来做到这一点所以请求时间之间没有冲突,然后创建自己的自定义类与数组和时间戳等?
顺便说一下缓存的保存代码是 -
private void SetDataIntoCache(ObjectCache cacheStore, string cacheKey, object target, DateTime slidingExpirationDuration)
{
CacheItemPolicy cacheItemPolicy = new CacheItemPolicy();
cacheItemPolicy.AbsoluteExpiration = slidingExpirationDuration;
cacheStore.Add(cacheKey, target, cacheItemPolicy);
}
Run Code Online (Sandbox Code Playgroud) 我有一个ASP.NET MVC应用程序,它具有.asmx Web服务
我编写了一个动作过滤器属性,我想在Web服务上的Web方法上使用,检查UserID和Password的Request标头,如果无效或不存在则抛出未经授权的响应代码.
但是,他们似乎没有被召唤!断点不会受到打击.
首先,使用MVC属性是一种可接受的方式来授权在ASMX Web服务上调用的Web服务吗?
其次,是否有更好/更有效的方式来授权Web服务方法调用?
假设我有一个webservice,它返回所有方法的类,通知客户端进程的状态,例如:
public class WsResult {
string result; // either "error" or "ok"
}
Run Code Online (Sandbox Code Playgroud)
现在我们要向此类添加属性,而不强制所有使用我们服务的客户端更新其软件.这可能吗?
例如:
public class WsResult {
public string result; // either "error" or "ok"
public Guid? someIdentifier;
}
Run Code Online (Sandbox Code Playgroud)
我正在寻找WCF和ASMX的答案.
asmx ×10
asp.net ×6
web-services ×6
.net ×5
wcf ×4
asp.net-mvc ×2
c# ×2
caching ×1
iis ×1
performance ×1
routing ×1
webmethod ×1
wsdl ×1