WCF / ASMX :: Clearing Cache On Post Operation?
Dec 11, 2010i have a rest url which inserts data, on insertion of the data i want to clear the cache?
View 1 Repliesi have a rest url which inserts data, on insertion of the data i want to clear the cache?
View 1 RepliesUsers can edit images downloaded from my site and then upload them back using a WCF Web Service. The problem is when users go to view images, they often do not see the latest versions because of caching. I'd rather not turn off the cache because it substantially reduces bandwidth. Is there a way to have the Web Service perform some action upon an upload to notify the next web client call that the image has changed?
View 2 RepliesI have MVC 2 site, and I.E is cacheing word documents linked on my site. I know there is a way to clear cache before every action in the controller. But for these links i am not using action, i am just creating regular href links.. Is there anyway i can clear the cache?
View 2 Replies I'm running an ASP.NET MVC website where several page controllers are decorated with an output cache attribute like:
[OutputCache(Duration = someduration..., VaryByParam = "*")]
These are typically forms where some lookup data are drawn from a database. These data change rarely, so the cache duration is typically set to 24 hours. Anyway, my question is: when the sql server is updated with new data in this area, is there a way of forcing such pages to "refresh" rather than keeping the cached output? Or if this cannot be done, is there at least a way of clearing the whole cache for the website?
I have a new ASP.Net web project and every time I change anything in the CSS file I need to delete temp internet files before I can see my changes?
View 8 RepliesI use this type of cache code on my pages
<%@ OutputCache Duration="60" VaryByParam="*" VaryByCustom="browser" %>
An issue by example. I have a page with the asp.net 2 (MSVS 2005) membership menu controls <asp:logonview etc on them. This control show different menus depending on if the member is logged on or not. I am using forms cookie authentication. The sequence of events. Page1 has the above cache settings and a logonview menu control on it. I am not logged on. I goto Page1. I view the page, and the logonvew control shows the button to logon. So correctly it has not detected a membership cookie and shows the logon button. I log on. I go back to page1, yet the logonview has not updated the menu for the newly logon status, as the page is sourced from the cache. I have to wait 60 seconds before the page can be rendered correctly. When the page is updated for logon status, the menu button for logon does not show, it should show Welcome Member Joe Bloggs. How can all pages cache be cleared when a log on happens, so there is not cache limbo, and the logonview menu control shows the correct status always?
I'm trying to cache user controls and on some pages i want to cache single objects. There are multiple ways of implementing caching, and my head is breaking over it.
The way I see the caching options now:
You have the PartialCaching option which is set to cache the control for 30 minutes, and after that it clears itself... You have the varyByParam to identity the page by its querystring paramaters... or other vary options
But i just cant find an appropriate way to add caching to a control, and be able to clear the caching programmatically when i update one of the objects used in the control from the backend.
You can do HttpContext.Current.Cache.Insert(), which accepts a key on which you can destroy the caching item later by using remove... This can save objects in cache but can you use options like varyByParam?
My questions are burnt down to two:
Is there a way to clear the caching on specific user controls from the code? If yes, can this be done according to the varyby options? How would the object caching respond to logged in users or anonymous users using Insert()?
EDIT: I'm caching multiple things.... And I'm really flabbergasted in which choice to make referring to caching. Can the Cache.Insert be varied by Parameters?
The main problem is peopling editing things from the backend, which needs to trigger an event that reinstantiates or clears all caching items referring that object.
I'm storing a dataset in an ASP.Net WebApplication-Cache. Every user in this intranet-app uses the same instance. On insert/update/delete-actions the database will be updated and the dataset is modified accordingly.
But rarely I get an exception that indicates that I've missed something. I assume that it must have something to do with thread safety.
Collection was modified; enumeration operation might not execute
In lines where i access a DataTable in the Dataset, for example:
Dim view As New DataView(dsERP.ERP_Charge, filter, sort, _
Data.DataViewRowState.CurrentRows)
It was apparently changed by another thread while the view enumerates the datatable.
What is the best way to make this thread safe?
Edit: as you've mentioned i need to lock the objects on add/edit/delete operations. MSDN* says that a DataSet is thread-safe for multiple users. What does this mean, are the DataTables in the Dataset also thread-safe? And how to lock a single datatable on write-operations and not the whole dataset?
*ADO.NET - Multithreaded Programming ADO.NET is optimized for performance, throughput, and scalability. As a result, the ADO.NET objects do not lock resources and must only be used on a single thread. The one exception is the DataSet, which is thread-safe for multiple readers. However, you need lock the DataSet during writes.
This is the property that returns the dataset:
Public ReadOnly Property dsERP() As ERPModel.dsERP
Get
If Cache("DS_ERP") Is Nothing Then
Cache("DS_ERP") = New ERPModel.dsERP
FillDataSet()
End If
Return DirectCast(Cache("DS_ERP"), ERPModel.dsERP)
End Get
End Property
i've modified the insert/update and delete operations in the following way(dsRma is a dataset):
Dim success As Boolean
SyncLock dsRMA.RMA
success = insert()
End SyncLock
First, does it work now if another thread tries to enumerate the RMA-Table? Second, is it sufficient to lock the datarow that gets updated instead of locking the whole datatable(see below)?
Dim thisRMA As ERPModel.dsRMA.RMARow = dsRMA.RMA.FindByIdRMA(Me.IdRma)
Dim success As Boolean
SyncLock thisRMA
success = update(thisRMA)
End SyncLock
In my asp.net web application I would like to clear all cache upon login when I click the back button in IE. I have tried various different ways but after I click the back button and then click the forward button it goes back to the submission aspx page with the same cache values. I am using master pages as well, if this makes any difference.
View 10 RepliesI'm implementing a MessageEncoder as described at MSDN
Is there a way to access the request, channel, or operation context from a MessageEncoder? I want to be able to save data for C# code to access after deserialization.
What is Post Cache substitution and how it is implemented in the asp.net page?
View 1 RepliesI have a web service that calls another web service (not my design).The wrapper web service is our code the underlying web service is 3rd party.The issue is that when one of our apps calls the web service wrapper.. it opens a new connection to the underlying web service and that login time is around 10seconds! (3rd party issue)... the calls after the login are fast in testing.SO we are trying to have ONE login for all the calls to the underlying services. However our wrapper service is called one by one..I was thinking if there was a way to store the underlying web service connection in a cache (netbean?) I could reuse it for all web service connections to the 3rd party...
View 1 Repliesin my case, It is the windows service which in running the long running insert/update on a table and I need to cancel the operation from my ASP.NET application. In the above link Burnsys suggests that one should kill the Sql server session. Is that really only way and a goood practice to do this? Also, in the same poset can use SqlCommand.Cancel to cancel. However, I am not sure how can I cancel the command from the windows service from ASP.NET application.
View 1 RepliesThese types of exceptions always irritate me because they are almost impossible to reproduce consistently and have almost no documentation other than the cryptic error itself to have any idea on how to fix the problem. So I have a Windows Service that makes a call to a .asmx web service over https on a polled interval every 20 minutes. Once in a great while the following exception message is returned:
Message: The underlying connection was closed: An unexpected error occurred on a receive.
Inner Message: System.IO.IOException: The decryption operation failed, see inner exception. ---> System.ComponentModel.Win32Exception:
The specified data could not be decrypted --- End of inner exception stack trace --- at
System.Net.Security._SslStream.ProcessReadErrorCode(SecurityStatus
errorCode, Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest, Byte[] extraBuffer) at System.Net.Security._SslStream.ProcessFrameBody(Int32 readBytes, Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest) at
System.Net.Security._SslStream.StartFrameBody(Int32 readBytes, Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security._SslStream.StartFrameHeader(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security._SslStream.StartReading(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security._SslStream.ProcessRead(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.TlsStream.Read(Byte[]
buffer, Int32 offset, Int32 size) at System.Net.PooledStream.Read(Byte[] buffer, Int32 offset, Int32 size) at System.Net.Connection.SyncRead(HttpWebRequest request, Boolean userRetrievedStream, Boolean probeRead)
So from reading the above message there was an error on receive and the data could not be decrypted. The does not occur consistently, so I don't have a good way of reproducing it. I also lack at low level messaging knowledge and I feel that this is the answer behind this exception; i.e. dropped packets and an incomplete message not appearing to be the same message as sent from the service or something. Any .asmx gurus out there that can give insight and possibly prevention suggestions for the above issue?
I have a method in wcf which returns stream of custom object. I need to deserialize this stream at client side, but my custom class which is exposed as data contract is not visible through client proxy. When I add a dummy operation contract which returns the custome object I am able to get this custom class. I dont want to write this dummy method as there are many such custom classes.
Is there any way to expose data contract without writing any operation contract that returns or accepts data contract type object?
I know this has been asked umpteen times but i cant find an answer to my problem. Very simply, i have a webservice client which is trying to call a webservice. The webservice may take any time from 5mins to 30mins (or more) for downloading message data from pop3 server . However after 2mins i get the following error:
System.Net.WebException: The operation has timed-out
This is an issue with the webservice client timing out calling the webservice - as the underlying webservice still runs in the background
Sequence osf steps when the error occurs:
1.User logins with his credentials
2.Webservice client calls webservice to connect to pop3 server and download messages for that particular user.
Code in webservice for downloading data from pop3 server where the exception occurs
private string ReadOutput(bool bMultiline)
{
try
{
StreamReader srReader = new StreamReader(conn);
string strRet = srReader.ReadLine();
if (bMultiline)
{
// Example #4: Append new text to an existing file
string strLine = "";
while (true)
{
// In a multiline message the . indicates end of message
if (strLine == ".")
break;
// Relay will convert any line with just a . in it to ..
if (strLine == "..")
strLine = ".";
strRet += "
" + strLine;
}
}
return strRet;
}
catch (Exception e)
{
return null;
}
}
3.Exception is caught in webservice client while webservice continues to run.This exception occurs only when the user receives a large message may be above 1mb because i tested with 1MB msg file where i dint have any problem receiving or downloading from
pop3 server where as with 5 MB message file i got this exception .
After going through couple of forums i tested my luck by changing web.config in both webservice and webservice client where i set the attribute of httpruntime Execution timeout to 300 seconds with no success <httpRuntime
executionTimeout="300"></httpRuntime>.
I have this webservice client and webservice running on localmachine(OS-Windows Vista)
Is there a way to post XML to a URL? and i would like to know, performance of posting XML to URL over web service.
View 2 Replieshave a web service that I'm trying to consume from a console app through http post. I receive a 500 exception error from the xmlstring parm being passed to the web service. Add the following to web.config of the web service. Although it is not working in debug in vs 2008 as well.
[Code]....
[Code]....
[Code]....
the host file is setup for the web service as well.
[Code]....
My web service uses .Net Framework 2.0. An e-learning application reads and updates an Access database in the web service via Http Post commands. I test the e-learning application and the web service using the version of IIS 7 that came with Windows Vista. I run IIS using localhost in my browser.
All works well. But a friend is having trouble running the same test with my files on her IIS 6 server. So I'm developing a checklist of issues in setting up an IIS 6 server to run a web service. I plan to include all possible causes of problems including permissions, accounts that are needed, etc. Are there resources to which I can go for this checklist?
What is difference between GET, POST AND SOAP protocols and when we should use it?
View 1 Replieswe need to expose a web service to the 3rd party vendor which can only call using POST protocol, NOT SOAP.So my question, is it better to build a web service or just simply .aspx page?Also is there any best practice documentation on this.
View 4 RepliesI can't seem to call a web service method from Ajax with both POST and GET.
Initially only the POST would work and GET would causes this error:
{"Message":"An attempt was made to call the method u0027getDatau0027 using a GET request, which is not allowed.","StackTrace":" at System.Web.Script.Services.RestHandler.GetRawParams(WebServiceMethodData methodData, HttpContext context)at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext
context, WebServiceMethodData methodData)","ExceptionType":"System.InvalidOperationException"}
I fixed that by adding this attribute: [ScriptMethod(UseHttpGet=true)] but now GET causes this error:
[code]....
So is it true that you can only use either POST or GET and not both from Ajax?
How may I post arbitrary data to a REST WCF webservice? I mean, wihout use contracts.
Because my data is dynamic and I cannot have contracts, I want to get ride of the serialization overhead.
How should I declare my service and method?
The ideal goal is to consume .asmx web service using jQuery like this
[Code]....
I am trying to post data from vb.net application to web service asmx that is located on server! For posting data from vb.net application I am using this code:
Public Function Post(ByVal url As String, ByVal data As String) As String
Dim vystup As String = Nothing
Try
'Our postvars
Dim buffer As Byte() = Encoding.ASCII.GetBytes(data)
'Initialisation, we use localhost, change if appliable
Dim WebReq As HttpWebRequest = DirectCast(WebRequest.Create(url), HttpWebRequest)
'Our method is post, otherwise the buffer (postvars) would be useless
WebReq.Method = "POST"
'We use form contentType, for the postvars.
WebReq.ContentType = "application/x-www-form-urlencoded"
'The length of the buffer (postvars) is used as contentlength.
WebReq.ContentLength = buffer.Length
'We open a stream for writing the postvars
Dim PostData As Stream = WebReq.GetRequestStream()
'Now we write, and afterwards, we close. Closing is always important!
PostData.Write(buffer, 0, buffer.Length)
PostData.Close()
'Get the response handle, we have no true response yet!
Dim WebResp As HttpWebResponse = DirectCast(WebReq.GetResponse(), HttpWebResponse)
'Let's show some information about the response
Console.WriteLine(WebResp.StatusCode)
Console.WriteLine(WebResp.Server)
'Now, we read the response (the string), and output it.
Dim Answer As Stream = WebResp.GetResponseStream()
Dim _Answer As New StreamReader(Answer)
'Congratulations, you just requested your first POST page, you
'can now start logging into most login forms, with your application
'Or other examples.
vystup = _Answer.ReadToEnd()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
Return vystup.Trim() & vbLf
End Function