Home » WPF

i am getting the SEHException and application is crashing

in my silverlight application i am calling OpenFileDialog openFile = new OpenFileDialog()
when it is executing it is throwing the SEHException and my application is crashing.
please help me out how to handle it.
Advance thanks,

in my silverlight application i am calling OpenFileDialog openFile = new OpenFileDialog()
when it is executing it is throwing the SEHException and my application is crashing.
please help me out how to handle it.
Advance thanks,

I have a custom page which opens as a child inside the main CRM web application page when clicked from the sitemap. This custom page looks similar to the Settings pages (icons and text with links).

When clicking some of the links, i want to redirect that child page to a crm edit form for a single entity, still as a child in the CRM web application page.

At the moment, redirecting to "{orgname}/userdefined/edit.aspx?etc={entityTypeCode}&id={entityId}# " is causing ie to crash and it says the application needs to be restarted. I am not sure what the issue is and why it doesn't like it. Does anyone have any ideas?

Thanks for your help.



baseUriBuilder.Path = string.Format(, );
                baseUriBuilder.Query = string.Format("etc={0}&id={1}#", , );



I'm using Windows XP SP3, VS2008.

I have a c++ class contains the following statement:

unsignedchar* pBuffer = newunsignedchar[bufferSize];

the bufferSize is around 30M.

Sometimes (when the application uses about 800 ~ 900 MB memory), the statement throws SEHException:

Exception: System.Runtime.InteropServices.SEHException: External component has thrown an exception.

Server stack trace: 
 at new[](UInt32 )

the question is:

Anyone met this problem before? The issue related to lack of memory or not? if related to lack of memory, why SEHException but not OutOfMemory? Is there any solution to resolve the problem?

In an .NET 3.5 application I recently got a SEHException. Within the app I had setup the two below events to log any unhandled exceptions.

Application.ThreadException += ApplicationThreadException;

AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;

        private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
            m_log.Error("An error occurred in the service. " + e.ExceptionObject);

        private static void ApplicationThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
            m_log.Error("An error occurred in the service.", e.Exception);

The problem is, my log file does not have any record of the exception happening. It does contain other records, so the log mechanism is working. Why is that? Am I missing an event?



Hi All,

     I am hitting with SEHException while disposing Softhandles which are internal to .NET Framework. Can you please suggest me a way to how to solve this issue ? When i check the stack, almost all the softhandles are pointing to the same object, that surprises me more. Please do check the Windbg output :


!threads output


  0    1 2fd4 0015b790      a020 Enabled  00000000:00000000 00163f78     0 MTA
   2    2 3174 0016e5f0      b220 Enabled  00000000:00000000 00163f78     0 MTA (Finalizer) System.Runtime.InteropServices.SEHException (0c3e9468)
   3    5 4be8 00195d30      b220 Enabled  00000000:00000000 00163f78     0 MTA
   4    7 40ac 001b8798      b220 Enabled  00000000:00000000 00163f78     0 MTA
   6    9 4b50 001c6d08   200b220 Enabled  00000000:00000000 00163f78     0 MTA
   7    a 2348 001cc2e8    80a220 Enabled  00000000:00000000 00163f78     0 MTA (Threadpool Completion Port)
   8    c 389c 001e65b0      b220 Enabled  00000000:00000000 00163f78     0 MTA
   9    d 4354 0022ec90   200b220 Enabled  00000000:00000000 00163f78     1 MTA
  11    3 1e7c 058a6830      b020 Enabled  00000000:00000000 00163f78     0 MTA
  13    e 1f98 058b0e98   200b220 Enabled  00000000:00000000 00163f78     0 MTA
  14   12 3d6c 058b7300   200b220 Enabled  00000000:00000000 00163f78     0 MTA
  15   13 427c 058b7a38      b220 Enabled  00000000:00000000 00163f78     0 MTA
  17   16 4c40 058da630    80a220 Enabled  00000000:00000000 00163f78     0 MTA (Threadpool Completion Port)
  20   17 2f14 059109a0   200b020 Enabled  00000000:00000000 00163f78     0 MTA
  21   22 4230 05976e90   880b220 Enabled  00000000:00000000 00163f78     0 MTA (Threadpool Completion Port)
  22   1f 3d90 08be5448      b220 Enabled  00000000:00000000 00163f78     2 MTA
  23    4 4914 00233478   200b220 Enabled  00000000:00000000 00163f78     0 MTA
  25   28 3674 0594e5e8   200b220 Enabled  00000000:00000000 00163f78     0 MTA
XXXX    b    0 0595f9a0      9820 Enabled  00000000:00000000 00163f78     0 MTA
  27    6 3140 001a41e0   880b220 Disabled 00000000:00000000 00163f78     0 MTA (Threadpool Completion Port)
  28    f 370c 0022dce0   380b220 Enabled  00000000:00000000 00163f78     1 MTA (Threadpool Worker)
  29   1c 2248 058c5810   200b220 Enabled  00000000:00000000 00163f78     1 MTA
  30   27 3fc8 05954b20   180b220 Enabled  00000000:00000000 00163f78     0 MTA (Threadpool Worker)
  31   14 4318 059759f8   880b220 Enabled  00000000:00000000 00163f78     0 MTA (Threadpool Completion Port)
  32   11 497c 08ba7370   180b220 Enabled  00000000:00000000 00163f78     0 MTA (Threadpool Worker)
  33   18 3798 058e5ea0   200b020 Enabled  00000000:00000000 00163f78     1 MTA
  34   1b 2ee4 05953d20   200b020 Enabled  00000000:00000000 00163f78     2 MTA System.Runtime.Remoting.RemotingException (0c0fd308)


!dso output


0:002> !clrstack
*** ERROR: Symbol file could not be found.  Defaulted to export symbols for mscorwks.dll -
PDB symbol for mscorwks.dll not loaded
OS Thread Id: 0x3174 (2)
ESP       EIP    
0097f720 7c8285f3 [NDirectMethodFrameStandalone: 0097f720] Microsoft.Win32.Win32Native.CloseHandle(IntPtr)
0097f730 792b82ad Microsoft.Win32.SafeHandles.SafeTokenHandle.ReleaseHandle()
0097f950 79e71b4c [GCFrame: 0097f950]
0097fb48 79e71b4c [GCFrame: 0097fb48]
0097fbb4 79e71b4c [HelperMethodFrame_1OBJ: 0097fbb4] System.Runtime.InteropServices.SafeHandle.InternalFinalize()
0097fc0c 792e5f2f System.Runtime.InteropServices.SafeHandle.Dispose(Boolean)
0097fc14 792e5e4b System.Runtime.InteropServices.SafeHandle.Finalize()
0:002> !dso
OS Thread Id: 0x3174 (2)
ESP/REG  Object   Name
0097f7e4 0c1cc610 Microsoft.Win32.SafeHandles.SafeTokenHandle
0097f890 0c1cc610 Microsoft.Win32.SafeHandles.SafeTokenHandle
0097f944 0c1cc610 Microsoft.Win32.SafeHandles.SafeTokenHandle
0097f96c 0c1cc610 Microsoft.Win32.SafeHandles.SafeTokenHandle
0097f978 0c1cc610 Microsoft.Win32.SafeHandles.SafeTokenHandle
0097fa04 0c1cc610 Microsoft.Win32.SafeHandles.SafeTokenHandle
0097fa40 0c1cc610 Microsoft.Win32.SafeHandles.SafeTokenHandle
0097fa6c 0c1cc610 Microsoft.Win32.SafeHandles.SafeTokenHandle
0097fa74 0c1cc610 Microsoft.Win32.SafeHandles.SafeTokenHandle
0097fae0 0c1cc648 Microsoft.Win32.SafeHandles.SafeTokenHandle
0097fb60 0c1cc610 Microsoft.Win32.SafeHandles.SafeTokenHandle
0097fbf0 0c1cc610 Microsoft.Win32.SafeHandles.SafeTokenHandle
0097fc14 0c1cc610 Microsoft.Win32.SafeHandles.SafeTokenHandle
0097fc58 0c1cc610 Microsoft.Win32.SafeHandles.SafeTokenHandle
0097fca4 0c1cc610 Microsoft.Win32.SafeHandles.SafeTokenHandle
0097fcb4 0c1cc610 Microsoft.Win32.SafeHandles.SafeTokenHandle
0097fcc4 0c1cc610 Microsoft.Win32.SafeHandles.SafeTokenHandle
0097fcc8 0c1cc610 Microsoft.Win32.SafeHandles.SafeTokenHandle
0097fcd8 0c1cc610 Microsoft.Win32.SafeHandles.SafeTokenHandle


I am not sure how all are referencing to the same Object.





Hi all!

I have a big trouble which I want you to discuss or may be to solve.

I have COM-component which is implemented as DLL and it calls methods of external COM-component which is implemented as EXE.

And I have .NET client written on Windows Forms which performs calls to my component which was described above.

.NET client has main form which looks like this


namespace WindowsFormsApplication9
  publicpartialclass Form1 : Form
    public Form1()

    public IMyApp m_app2;

    privatevoid button1_Click(object sender, EventArgs e)

      IApp app = new AppClass();
      m_app2 = (IMyApp)app.GetApp();

      Form2 frm2 = new Form2(m_app2);



you can see that this form creates the instance of my COM-component and also creates another form when user clicks the button and gives it the pointer to COM-component.

The second form looks like this


namespace WindowsFormsApplication9
  publicpartialclass Form2 : Form
    public IMyApp m_app2;

    public Thread m_thread;

    public Form2(IMyApp app2)
      m_app2 = app2;

      m_thread = new Thread(TreadEntryPoint);


    privatevoid button1_Click(object sender, EventArgs e)

    privatevoid TreadEntryPoint()


you can see that in the constructor of the form it receives the pointer and then creates the new thread and then calls the method of the COM-component using the received pointer. The call is made in second newly created thread.

So here is the problem.

The implementation of SomeMethod looks like this


	catch(_com_error& ex) 
		IErrorInfo* pErrorInfo = ex.ErrorInfo();
			::SetErrorInfo(0, pErrorInfo);
		return E_FAIL;
	return S_OK;

you can see that my dll component redirects the call to another com component pointed by m_external_component member variable of class CApp.

So, if I raise an error in the dll component without calling the remote component method everything works fine. In my second worker thread I receive a COMException with correct information. But if I raise the same error using ::SetErrorInfo in my remote component I will receive a _com_error exception in my dll component. And after that I can rethrow the error to the .NET client as shown in the code example or I can also ignore the error and return that everything is ok, but result will be the same. I will receive SEHException with "external component has thrown an exception" description in the thread which initially created the COM component.

When everything is working on the only one thread everything works fine and errors which are raised in the remote component are correctly caught in .NET client without SEH. But if we working as described above I receive SEH when I raise the error in remote component.

Your help will be very appreciated. Thanks in advance.




This is very puzzling.  My WinForm application has been working fine without any issue.  However, recently, the same application installed from the "Setup/Installer" started throwing SEHException where the application runs without problem through Visual Studio 2008 enviroment... both debug and release.  When I move my mouse over the Media Control section where "play" button is, SEHException is thrown.

Can someone help please?

The exception stack is:

System.Runtime.InteropServices.SEHException: External component has thrown an exception.
   at System.Windows.Forms.UnsafeNativeMethods.CallWindowProc(IntPtr wndProc, IntPtr hWnd, Int32 msg, IntPtr wParam, IntPtr lParam)
   at System.Windows.Forms.NativeWindow.DefWndProc(Message& m)
   at System.Windows.Forms.Control.WmMouseMove(Message& m)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.AxHost.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)



When i try to open print dialog on click of print button in the webBrowser opened in a Windows application, application crashes.

Stack trace:

System.Runtime.InteropServices.SEHException : External Component has thrown an exception

at System.Windows.Forms.UnSafeNativeMethods.ThemingScope.DeactivatedActCtx(Int32 dwFlags, IntPtr lpCookie)

at System.Windowxs.Forms.UnSafeNativeMethods.ThemingScope.Deactivate(IntPtr userCookie)

at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason,ApplicationContext  Context)

at System.Windows.Forms.Application.Run()

PLease help to resolve the issue


In my C++ app. code created using VS 2008 I have used vector to store name of comp.The issue I m facing is if comp name is somewhat smaller (lets say "p1") it works fine but if it is like "component_of_part-5909" application crashes at push_back .What could be the reason of this?? here is my code

vector<char*> compList;



wchar_t newCompName;

compType mdl;

if(compList.size() == 0)


COnvertingAPI(mdl,newCompName); //this is specific to my app.

char* charTemp = new char();

ConvertWstringToString(charTemp, newCompName); //convert wchar_t string to the char*

compList.push_back(charTemp); //insert name of component into a vector





char* charTemp = new char();

ConvertWstringToString(charTemp, newCompName);

compList.push_back(charTemp); //app crashes here







Dear All,

I have used SHBrowseForFolder in my application. I have handled BrowseCallbackProc. So when selection changes I have used SHGetPathFromIDList, but it fails at Nokia phone browser with Application Verifier. But without AV it erturns the path as : ::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{416651E4-9C3C-11D9-8BDE-F66BAD1E3F3A}. So does anybody knows the reason for it & how to pass it through Application Verifier.

Thanx & Regards,



I am porting my application (C#) which communicates  with several unmanaged c++ DLL's  (thru Pinvoke)to 64 bit.

I have a problem with unmanaged exceptions..

On 32 bits it' works just fine.
C++: throw
C#: catch as a SEHException

On 64 bits(Vista, 7) i have an application crash. I can't catch any of these exceptions...
I have tried switch EHa / EHsc with no success.

C# global catch doesn't help

Crash info:

Fault Module Name: StackHash_579c



We have a windows service process that has been running for years and yesterday and today it just crashes without any exceptions. We have a main try and catch on the main app but it does not hit that code. In the event viewer we see the following error

Faulting application myservice.exe, version 2.0.3825.16900, stamp 4c208108, faulting module kernel32.dll, version 5.2.3790.4480, stamp 49c51f06, debug? 0, fault address 0x0002237e.

Has anyone seen this before and is it possible I could trap this.


We have installed RTC 1.3 in a XP machine having service pack 3.  There is a Visual Basic sample SDK under :\Program Files\RTC Client API v1.3 SDK\SDK\Samples\VBSAMPLE directory.  This sample can be used for peer to peer VOIP call ( including Audio and IM ) between two users.  The application contains a tuning wizard for tuning Microphone and Speakers in the target machine.

 We are able to run the application and RTC initialization seems to be successful. However on clicking the wizard the application crashes.  A crash dump with Debug Diagnostic  tool is pointing to error on “GetWindowRect” . The dump also referring to memory corruption with comctl32 .dll




Im working with the MSMQ Multicast. Everything works fine except one thing. I am creating a new Queue for each instance of my application (I want to allow users to run several instances of the application).

When the application is shut down the dispose metod deletes the queue to free up resources. If i dont delete it, after some time I get a not enough resources exception. This works fine too.

The problem is: If my application crashes or i shut it down through visual studio while debugging the dispose methos is not called and the queue not deleted. Is there any possible way to set a default delete/kill time on the queue? Any other best practice or any pattern that will solve my problem?




I am using XP Embedded device. I have written application which is calling LoadLibrary() and finally end up in crash.


call stack:-

ChildEBP RetAddr  Args to Child              

0012f128 7c915152 04120000 00000000 00000002 ntdll!RtlpLocateActivationContextSection+0xd (FPO: [5,6,0])

0012f158 7c9150b5 0012f194 0012f1cc 0012f1b8 ntdll!RtlpFindNextActivationContextSection+0x61 (FPO: [4,2,4])

0012f170 7c915399 0012f194 0012f1cc 0012f1b8 ntdll!RtlpFindFirstActivationContextSection+0x41 (FPO: [4,0,0])

0012f1bc 7c915af1 00000003 00000000 00000002 ntdll!RtlFindActivationContextSectionString+0x8e (FPO: [5,10,4])

0012f280 7c9159b2 00000000 0012f2ac 00000000 ntdll!RtlEncodeSystemPointer+0x9ff (FPO: [3,40,0])

0012f3e8 7c916278 00000001 0012f6c8 7c97c174 ntdll!RtlDosApplyFileIsolationRedirection_Ustr+0x267 (FPO: [9,82,4])

0012f69c 7c801bb9 00154da0 0012f6e8 0012f6c8 ntdll!LdrLoadDll+0xae (FPO: [Non-Fpo])

0012f704 7c801d6e 7ffdfc00 00000000 00000000 kernel32!LoadLibraryExW+0x18e (FPO: [Non-Fpo])

0012f718 7c801da4 0012f750 00000000 00000000 kernel32!LoadLibraryExA+0x1f (FPO: [3,0,0])

0012f734 0048473e 0012f750 00000011 00000000 kernel32!LoadLibraryA+0x94 (FPO: [1,0,0])

MessageBox displaying the message:

The instruction at "0x7c91519d" referenced memory at "0x412000c". The memory could not be "read" Click ok to terminate the program

Can you please help by tell when do we see this message


Hello there fellows ^^


I seem to have a problem with an application i made. I hope you can help me with this as it has puzzled me for awhile now.


The Application---------------------

The application itself...

- is written in visual basic

- uses the VLC activex plugin v2 as a COM component

- has been compiles in all 3 modes (x86, x64, and AnyCPU)

- was developed in Visual Studio 2010 with the 3.5 .NET Framework as a target


Basically what this application does is connects to my server, and receives a http stream at port 8080 (inside the stream is audio/video) It also has a schedule function that retrieves a text file from my server and displays it as the schedule. The schedule updates itself every second. It is made up of 2 forms. The first one is the startup form that contains the vlc COM component to display the stream. It also has a menu strip on it that leads to the second form which contains the schedule display.

   How does it work?

Well to connect to my server i have the vlc COM component add the stream url to its playlist, and then play it. Easy stuff. The schedule display downloads a text file from my server and reads the file, then displays it on a read only text box.


After building, the application needs AxInterop.AXVLC.dll and Interop.AXVLC.dll to run. These .dll's only need to be in the same directory so there's no problem there. All 3 files amount to 128 KB. I bundle all 3 files in a SFX archive with WinRAR for easy transport and so the .dll's don't come unsupplied. Without the .dll's the program will not work.

The Development and Testing Environment------------------------


I use Visual Studio 2010 as the IDE. It is run on an Asus 1005 PEB with a x86 Intel Atom Processor at 1.66 Ghz and 1 gb RAM. (Yeah I know not exactly the best development environment but I get by) My OS is Windows 7 Ultimate 32 bit. It is up to date and has up to .NET Framework 4 (plus the extended, multitargeting pack etc.) installed. VLC 1.0.5 is installed with everything (activex and mozilla plugin included, and yes I know this isn't the absolute latest version, but it works flawlessly for my uses {as a streaming server and receiver also the mozilla plugin works perfect on my website})


My testing environment is on a toshiba laptop with an x64 AMD Turion II Dual Core at 2.3 Ghz with 4 gb RAM. The OS is windows 7 Home Premium 64 bit. It is also up to date, however it only has up to .NET 3.5 Framework on it (but that's what I'm developing for anyways) It also has VLC 1.0.5 on it (activex and mozilla plugin included)

So What's the Problem?-------------------------

Well when I start the application in the testing environment (yes I have tried all 3 different builds with same result) it says that it is not working and windows proceeds to try to "solve" it, however it generates no output for me to see. It won't even load the first form. It's not really a crash because it doesn't seem to run, more just like an execution failure when I start it. Details of the event log are further down in this post.

Before You Say It...---------------------------


Yes, my server is configured correctly and the proper ports are forwarded on my router. I know this for a fact because my website is up on the internet and accessible outside my local network. I also have it set up right now with the VLC mozilla plugin and anything streamed plays flawlessly. The application I made uses the exact same port as the plugin in my webpage, 8080 of course. Im working on other protocols but that's for later.

    Did you build in x64?

Yes I did. It wouldn't run on my netbook of course, but it'll try on the x64 Toshiba. Also I built in AnyCPU mode too.

    Has it worked already? (Is it actually functional?)

Yes it is functional and it works perfectly on my Asus netbook. It starts, opens the stream, and plays the content. The schedule function also works perfect.

    What about those .dll's?

Those work as needed already on my netbook. Even if they are with the application as should be the application refuses to work on the laptop.

    The event log---------------------------------

Fault bucket 1234712389, type 5
Event Name: CLR20r3
Response: Not available
Cab Id: 0

Problem signature:
P1: stream viewer.exe
P3: 4c2d1744
P4: Stream Viewer
P6: 4c2d1744
P7: 11
P8: ef
P9: System.InvalidOperationException

Attached files:

These files may be available here:
C:\Users\J031\AppData\Local\Microsoft\Windows\WER\ReportArchive\AppCrash_theater viewer.e_ccbeac6e7139f5ce7fac9060ebad2d2ab60bd68_0313b452

Analysis symbol:
Rechecking for solution: 0
Report Id: c511a615-8570-11df-a2fd-705ab680e07d
Report Status: 0

- <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
- <System>
  <Provider Name="Windows Error Reporting" />
  <EventID Qualifiers="0">1001</EventID>
  <TimeCreated SystemTime="2010-07-02T00:29:01.000000000Z" />
  <Security />
- <EventData>
  <Data>Not available</Data>
  <Data>stream viewer.exe</Data>
  <Data>Theater Viewer</Data>
  <Data />
  <Data>C:\Users\J031\AppData\Local\Microsoft\Windows\WER\ReportArchive\AppCrash_stream viewer.e_ccbeac6e7139f5ce7fac9060ebad2d2ab60bd68_0313b452</Data>
  <Data />


I've really tried to solve this on my own, but to no avail. Usually I'll get stumped and solve it in a few hours but it has been a few days. I hope someone can help me with this as it would really help me out.



We developing a netcf 3.5 applicationĀ  on Windows Mobile 5. We encounteredĀ  an Out of Memory Problem during our fieldtests. To identify the critical modules i would like to use the RPM (Version So far the tool works fine until i try to view a GC Heap dump. This causes an exception saying that the problem occurred in mscoree3_5.dll. The monitoring itself works.

Does anyone has an idea what to do or how to get the heap dump working?

Thank you a lot.



We have a unmanaged C++ TCP server application running as a Windows service that is silently crashing after few days of run on Win2003 server. There is no drwtsn log file getting generated (no issue with drwtsn log as it catches other crashes in same application). Due to lack of drwtsn log file, we are unable to progress on how to debug this further..

The TCP server application is sort of HTTP processor. It connects to wide range of webserver and processes data.

Can someone please guide me what can be done to debug the silent crashes.. There are 1000+ users connected to this server at any instant and thus its not possible to run the same in debug mode. The crash is not reproducible and happens once in 5-10 days on one of the 6 servers..


Any tool that can help to debug these silent crashes. The application is a pure C++ application without any MFC or STL..


Thanks in Advance.



This error is present in both Debug/Release.

I am using Windows Server Standard 2008R2 x64, (same behavior is in Windows 7 x64)

I was looking through it and first error said it was missing msvcr90.dll and I added it to the System32 folder. I tried re-installing Visual C++ redistributable but no help.

After adding this all it said was the error in title

I tried using Dependency Walker to see whats wrong and it had ieshims.dll as missing. I copied that one from %ProgramFiles%/Internet Explorer to System32.

Still same error message.

After adding that all it says is there are "Modules with different CPU types were found" In this image you can see the Dependency walker screen shot.


So it seems its linking incorrectly to 32 bit library, but thats something that comes from occache.dll (win lib) and it links to winsxs\x86.. folder to COMCTL32.dll, but that lib is in System32 folder (correct one ) so not sure why is it linking to this one

Any ideas???




This is referring to the crash I see in this thread http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/fe80694d-82c7-4e1f-a048-34d4beba2a39.

Doing some investigating I found that systems with KB982524 installed caused our company's WPF application to crash on startup. Digging deeper i found that the update was actually installed as two updated, and it was namely KB977354 that was the culprit.

Once uninstalling KB977354 in the add/remove programs control panel, our application runs fine.

Where can I start a dialog with MSFT about this issue?


<< Previous      Next >>

Microsoft   |   Windows   |   Visual Studio   |   Sharepoint   |   Azure