Automatically generate your SharePoint disco.aspx and wsdl.aspx files in seconds!
No need to manually copy or deploy your .asmx first!
No manual editing!
No Disco.exe needed!
Automatically recycles the application pool (ensuring the newest assembly is loaded)!
Automatically deploys the final SharePoint web service files (using the -deploy option)!
Automatically deploys your assembly to the GAC (using the -gac option)!
No UI to enter data each time. A command tool you can script for fast, consistent re-use!
After having to manually modify the disco.aspx and wsdl.aspx files by hand for the last three years, I finally found it tedious enough to create this utility. There are other tools out there, but they require you to enter information into a Windows UI, they are not script-able, and still felt to tedious for me. Call me lazy. :) Time is money. This tool is a command line utility. Simply execute the SPDev.exe command and your MyServiceDisco.aspx and MyServiceWsdl.aspx files are immediately ready for deployment. SPDev also allows you to script the process. Create a .cmd or .bat file and you’ll never have to enter any parameters again. Another big benefit is you don't need to use the Disco.exe utility since SPDev uses IIS and .NET instead which will always be on your development machine - since you are developing for SharePoint. And, there are no temp files are generated (unless you want them generated).
SPDev Usage Overview
Below are the suggested steps you will need to complete to generate your custom SharePoint web service .aspx files.
- Build your Visual Studio project to generate your web service assembly (.dll) file.
- Copy your assembly to the Bin or GAC.
- Execute the SPDev.exe command.
Sample Batch/Script Command (.cmd) File
Before you can generate the standard DISCO and WSDL files needed for any web service, you must deploy your assembly to either the Bin folder or to the Global Assembly Cache (GAC). Below is an example of a command (.cmd) file you can use to automatically add your assembly to the GAC and then generate your SharePoint web service (.aspx) files using the SPDev utility. This example also uses the optional -deploy parameter to automatically deploy the final SharePoint web service files to the standard SharePoint web services ISAPI (_vti_bin) folder on your local development machine - for quick and immediate use by the developer.
Note: the path specified in the example below for the GacUtil.exe may be different for your machine.
Sample SPDev-GenWS.cmd script:
@echo GAC Assembly
"C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\GacUtil.exe" /if bin\MyService.dll
@echo Generate SharePoint web service files using SPDev Utility
SPDev.exe -o GenWS -url http://localhost -asmx MyService.asmx –deploy
SPDev Command Syntax
Here is a snip of the SPDev command syntax help, which provides an overview of what the command provides.
SPDev.exe Command Syntax
Usage:
SPDev.exe -o <operation> [<parameters>]
SPDev.exe -? | –help
Operations:
-o GenWS
Generates the final SharePoint web service disco.aspx and wsdl.aspx files for your
custom web service.
Parameters:
-url <web server url>
Specifies the url to the SharePoint web application. This only needs
to be the URL to the root web application site. A url value of
http://localhost may be used for easy use by several developers.
-asmx <filename>
Specifies the web service .asmx file name. This may be an absolute or
relative path.
[-tempfiles]
Saves the standard .disco and .wsdl generated files to the Temp folder.
These are the standard non-SharePoint web service .disco and .wsdl files,
which are used to create the final SharePoint disco.aspx and wsdl.aspx
web service files. A subfolder named “Temp” is created.
[-temppath] <path>
Specifies a custom path to use for temporary files. When omitted, a
subfolder named “Temp” is created, if the –tempfiles option is specified.
May be a relative or absolute path.
[-outpath] <path>
Specifies a custom path to place the generated SharePoint web service
.aspx files. When omitted, the path defaults to the current execution
folder. May be a relative or absolute path.
[-deploy]
Copies the generated web service disco.aspx and wsdl.aspx files to the
standard web services SharePoint ISAPI (_vti_bin) folder.
IMPORTANT: This is not the recommended deployment method for
production environments.
Additional Arguments (available with any operation):
[-debug]
Displays stack track for any exception message to the console.
[-pause]
Pauses the command on completion. Press any key to continue.
Examples:
SPDev.exe -o GenWS -url http://localhost -asmx My.asmx
SPDev.exe -o GenWS -url http://localhost -asmx My.asmx –deploy
SPDev.exe -o GenWS -url http://localhost -asmx My.asmx –tempfiles -debug
General Web Service Trouble Shooting Tips
Below are common web service trouble shooting tips. These are relevant to web services in general and not issues caused by the SPDev utility.
Unable to load assembly, or assembly not found error (or something like this)
- Tip: Try specifying the strong class name in your .asmx file in the class attribute.
If you have something like this:
Class="WebService1.Service1"
Try using the strong class name for your web service class similar to this:
Class="WebService1.Service1, Service1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=bc8b106c76sample"
SPDev GenWS Trouble Shooting Tips
Debugging?
- Tip: Remember that SPDev’s GenWS operation has an optional –tempfiles parameter. This will save the standard .disco and .wsdl files generated by your web server to a “temp” subfolder. These should look like standard (non-SharePoint) web service files – the files you normally have to modify manually. If these files do not look correct, review them to see if they contain any error message information that may be helpful in determining the cause.
Error: Web Service disco is not a valid Disco File.
Error: Web Service wsdl is not a valid WSDL File.
- Tip: This error is likely caused by your web services assembly and/or .asmx file not being deployed correctly. Be sure you assembly is properly deployed to either the Bin or GAC before executing the SPDev command.
- Tip: Try resetting IIS in case something else has a lock on your assembly. I have experienced this happing (occasionally) where my Visual Studio environment has held a lock on my pre-existing assembly preventing a new version of the assembly from being deployed to the GAC. In this case, you may want to try closing Visual Studio and then resetting IIS. You will need to re-GAC your newest assembly once the old assembly has been unlocked.