From what you have shown the problem will be due to how your path is being resolved.
The ~ character refers to the home directory of the application on your web server, for instance;
http://localhost:1234
To confirm if your path is valid you can just enter the path to the file in your web browser (with the solution running of course) as follows;
http://localhost:1234/reports/MatRecReport-new.rpt
If you are prompted to save or open the file your path is correct.
Once your path is correct, you will need to use Server.MapPath as follows;
cryRpt.Load(Server.MapPath("~/reports/MatRecReport-new.rpt"));
Kind Regards